[Scummvm-cvs-logs] SF.net SVN: scummvm: [21906] scummvm/trunk/base

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sat Apr 15 06:13:03 CEST 2006


Revision: 21906
Author:   fingolfin
Date:     2006-04-15 06:12:03 -0700 (Sat, 15 Apr 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=21906&view=rev

Log Message:
-----------
- Replaced ConfigManager::_globalDomains by _appDomain (we don't support multiple global domains anymore)
- Restructured parts of the ConfigManager to be more consistent and a bit easier to understand
- Introduced ConfigManager::getDomain, potentially useful for code that needs to edit a specific domain (like the option dialogs)
- Allow passing an empty string to ConfigManager::setActiveDomain(), to reset the active domain
- Discard all transient config options (i.e. mostly command line settings) when entering the launcher, and after an engine exits
- Introduced various hidden easter bugs. Happy easter, and have fun searching!

Modified Paths:
--------------
    scummvm/trunk/base/engine.cpp
    scummvm/trunk/base/gameDetector.cpp
    scummvm/trunk/base/main.cpp
    scummvm/trunk/common/config-manager.cpp
    scummvm/trunk/common/config-manager.h
Modified: scummvm/trunk/base/engine.cpp
===================================================================
--- scummvm/trunk/base/engine.cpp	2006-04-15 12:19:38 UTC (rev 21905)
+++ scummvm/trunk/base/engine.cpp	2006-04-15 13:12:03 UTC (rev 21906)
@@ -56,12 +56,18 @@
 }
 
 void Engine::initCommonGFX(GameDetector &detector, bool defaultTo1XScaler) {
+	const Common::ConfigManager::Domain *transientDomain = ConfMan.getDomain(Common::ConfigManager::kTransientDomain);
+	const Common::ConfigManager::Domain *gameDomain = ConfMan.getDomain(detector._targetName);
+
+	assert(transientDomain);
+
 	const bool useDefaultGraphicsMode =
-		!ConfMan.hasKey("gfx_mode", Common::ConfigManager::kTransientDomain) &&
+		!transientDomain->contains("gfx_mode") &&
 		(
-		!ConfMan.hasKey("gfx_mode", detector._targetName) ||
-		!scumm_stricmp(ConfMan.get("gfx_mode", detector._targetName).c_str(), "normal") ||
-		!scumm_stricmp(ConfMan.get("gfx_mode", detector._targetName).c_str(), "default")
+		!gameDomain ||
+		!gameDomain->contains("gfx_mode") ||
+		!scumm_stricmp(gameDomain->get("gfx_mode").c_str(), "normal") ||
+		!scumm_stricmp(gameDomain->get("gfx_mode").c_str(), "default")
 		);
 
 	// See if the game should default to 1x scaler
@@ -77,12 +83,19 @@
 		}
 	}
 
+	// Note: The following code deals with the fullscreen / ASR settings. This
+	// is a bit tricky, because there are three ways the user can affect these
+	// settings: Via the config file, via the command line, and via in-game
+	// hotkeys.
+	// Any global or command line settings already have been applied at the time
+	// we get here. Hence we only do something 
+
 	// (De)activate aspect-ratio correction as determined by the config settings
-	if (ConfMan.hasKey("aspect_ratio", detector._targetName))
+	if (gameDomain && gameDomain->contains("aspect_ratio"))
 		_system->setFeatureState(OSystem::kFeatureAspectRatioCorrection, ConfMan.getBool("aspect_ratio"));
 
 	// (De)activate fullscreen mode as determined by the config settings
-	if (ConfMan.hasKey("fullscreen", detector._targetName))
+	if (gameDomain && gameDomain->contains("fullscreen"))
 		_system->setFeatureState(OSystem::kFeatureFullscreenMode, ConfMan.getBool("fullscreen"));
 }
 

Modified: scummvm/trunk/base/gameDetector.cpp
===================================================================
--- scummvm/trunk/base/gameDetector.cpp	2006-04-15 12:19:38 UTC (rev 21905)
+++ scummvm/trunk/base/gameDetector.cpp	2006-04-15 13:12:03 UTC (rev 21906)
@@ -602,6 +602,10 @@
 		_gameid = ConfMan.get("gameid");
 	else
 		_gameid = _targetName;
+	
+	// TODO: In the future, simply insert the gameid into the transient domain.
+	// That way, all code (including backends) can reliably access it.
+	//ConfMan.set("gameid", _gameid, Common::ConfigManager::kTransientDomain);
 }
 
 bool GameDetector::detectMain() {

Modified: scummvm/trunk/base/main.cpp
===================================================================
--- scummvm/trunk/base/main.cpp	2006-04-15 12:19:38 UTC (rev 21905)
+++ scummvm/trunk/base/main.cpp	2006-04-15 13:12:03 UTC (rev 21906)
@@ -314,8 +314,15 @@
 	setupDummyPalette(system);
 
 	// Unless a game was specified, show the launcher dialog
-	if (detector._targetName.empty())
+	if (detector._targetName.empty()) {
+		// Discard any command line options. Those that affect the graphics
+		// mode etc. already have should have been handled by the backend at
+		// this point. And the others (like bootparam etc.) should not
+		// blindly be passed to the first game launched from the launcher.
+		ConfMan.getDomain(Common::ConfigManager::kTransientDomain)->clear();
+
 		running = launcherDialog(detector, system);
+	}
 
 	// FIXME: We're now looping the launcher. This, of course, doesn't
 	// work as well as it should. In theory everything should be destroyed
@@ -331,11 +338,11 @@
 			if (result == 0)
 				break;
 
-			// There are some command-line options that it's
-			// unlikely that we want to preserve now that we're
-			// going to start a different game.
-			ConfMan.removeKey("boot_param", ConfMan.kTransientDomain);
-			ConfMan.removeKey("save_slot", ConfMan.kTransientDomain);
+			// Discard any command line options. It's unlikely that the user
+			// wanted to apply them to *all* games ever launched.
+			ConfMan.getDomain(Common::ConfigManager::kTransientDomain)->clear();
+			
+			// TODO: Reset the game detector fully
 
 			// PluginManager::instance().unloadPlugins();
 			PluginManager::instance().loadPlugins();

Modified: scummvm/trunk/common/config-manager.cpp
===================================================================
--- scummvm/trunk/common/config-manager.cpp	2006-04-15 12:19:38 UTC (rev 21905)
+++ scummvm/trunk/common/config-manager.cpp	2006-04-15 13:12:03 UTC (rev 21906)
@@ -54,8 +54,8 @@
 	return t;
 }
 
-static bool isValidDomainName(const Common::String &domain) {
-	const char *p = domain.c_str();
+static bool isValidDomainName(const Common::String &domName) {
+	const char *p = domName.c_str();
 	while (*p && (isalnum(*p) || *p == '-' || *p == '_'))
 		p++;
 	return *p == 0;
@@ -68,25 +68,17 @@
 const String ConfigManager::kApplicationDomain("scummvm");
 const String ConfigManager::kTransientDomain("__TRANSIENT");
 
-const String trueStr("true");
-const String falseStr("false");
-
 #else
 
 const char *ConfigManager::kApplicationDomain = "scummvm";
 const char *ConfigManager::kTransientDomain = "__TRANSIENT";
 
-const char *trueStr = "true";
-const char *falseStr = "false";
-
 #endif
 
 #pragma mark -
 
 
 ConfigManager::ConfigManager() {
-	// Ensure the global domain(s) are setup.
-	_globalDomains[kApplicationDomain];
 }
 
 
@@ -121,13 +113,10 @@
 }
 
 void ConfigManager::loadConfigFile(const String &filename) {
-	_globalDomains.clear();
+	_appDomain.clear();
 	_gameDomains.clear();
 	_transientDomain.clear();
 
-	// Ensure the global domain(s) are setup.
-	_globalDomains[kApplicationDomain];
-
 	_filename = filename;
 	_domainSaveOrder.clear();
 	loadFile(_filename);
@@ -181,8 +170,8 @@
 				}
 
 				// Store domain comment
-				if (_globalDomains.contains(domain)) {
-					_globalDomains[domain].setDomainComment(comment);
+				if (domain == kApplicationDomain) {
+					_appDomain.setDomainComment(comment);
 				} else {
 					_gameDomains[domain].setDomainComment(comment);
 				}
@@ -212,8 +201,8 @@
 				set(key, value, domain);
 
 				// Store comment
-				if (_globalDomains.contains(domain)) {
-					_globalDomains[domain].setKVComment(key, comment);
+				if (domain == kApplicationDomain) {
+					_appDomain.setKVComment(key, comment);
 				} else {
 					_gameDomains[domain].setKVComment(key, comment);
 				}
@@ -239,8 +228,8 @@
 		// are not present anymore.
 		StringList::const_iterator i;
 		for (i = _domainSaveOrder.begin(); i != _domainSaveOrder.end(); ++i) {
-			if (_globalDomains.contains(*i)) {
-				writeDomain(cfg_file, *i, _globalDomains[*i]);
+			if (kApplicationDomain == *i) {
+				writeDomain(cfg_file, *i, _appDomain);
 			} else if (_gameDomains.contains(*i)) {
 				writeDomain(cfg_file, *i, _gameDomains[*i]);
 			}
@@ -248,13 +237,9 @@
 
 		DomainMap::const_iterator d;
 
-		// Now write the global domains which weren't written yet
-		for (d = _globalDomains.begin(); d != _globalDomains.end(); ++d) {
-			if (!_domainSaveOrder.contains(d->_key))
-				writeDomain(cfg_file, d->_key, d->_value);
-		}
-
-		// Finally write the remaining game domains
+		// Now write the domains which haven't been written yet
+		if (!_domainSaveOrder.contains(kApplicationDomain))
+			writeDomain(cfg_file, kApplicationDomain, _appDomain);
 		for (d = _gameDomains.begin(); d != _gameDomains.end(); ++d) {
 			if (!_domainSaveOrder.contains(d->_key))
 				writeDomain(cfg_file, d->_key, d->_value);
@@ -295,91 +280,142 @@
 	fprintf(file, "\n");
 }
 
+
 #pragma mark -
 
 
+const ConfigManager::Domain *ConfigManager::getDomain(const String &domName) const {
+	assert(!domName.empty());
+	assert(isValidDomainName(domName));
+	
+	if (domName == kTransientDomain)
+		return &_transientDomain;
+	if (domName == kApplicationDomain)
+		return &_appDomain;
+	if (_gameDomains.contains(domName))
+		return &_gameDomains[domName];
+
+	return 0;
+}
+
+ConfigManager::Domain *ConfigManager::getDomain(const String &domName) {
+	assert(!domName.empty());
+	assert(isValidDomainName(domName));
+	
+	if (domName == kTransientDomain)
+		return &_transientDomain;
+	if (domName == kApplicationDomain)
+		return &_appDomain;
+	if (_gameDomains.contains(domName))
+		return &_gameDomains[domName];
+
+	return 0;
+}
+
+
+#pragma mark -
+
+
 bool ConfigManager::hasKey(const String &key) const {
 	// Search the domains in the following order:
-	// 1) Transient domain
-	// 2) Active game domain (if any)
-	// 3) All global domains
+	// 1) the transient domain,
+	// 2) the active game domain (if any),
+	// 3) the application domain.
 	// The defaults domain is explicitly *not* checked.
 
 	if (_transientDomain.contains(key))
 		return true;
 
-	if (!_activeDomain.empty() && _gameDomains[_activeDomain].contains(key))
+	if (_activeDomain && _activeDomain->contains(key))
 		return true;
 
-	DomainMap::const_iterator iter;
-	for (iter = _globalDomains.begin(); iter != _globalDomains.end(); ++iter) {
-		if (iter->_value.contains(key))
-			return true;
-	}
+	if (_appDomain.contains(key))
+		return true;
 
 	return false;
 }
 
-bool ConfigManager::hasKey(const String &key, const String &dom) const {
-	assert(!dom.empty());
-	assert(isValidDomainName(dom));
+bool ConfigManager::hasKey(const String &key, const String &domName) const {
+	// FIXME: For now we continue to allow empty domName to indicate
+	// "use 'default' domain". This is mainly needed for the SCUMM ConfigDialog
+	// and should be removed ASAP.
+	if (domName.empty())
+		return hasKey(key);
 
-	if (dom == kTransientDomain)
-		return _transientDomain.contains(key);
-	if (_gameDomains.contains(dom))
-		return _gameDomains[dom].contains(key);
-	if (_globalDomains.contains(dom))
-		return _globalDomains[dom].contains(key);
+	const Domain *domain = getDomain(domName);
 
-	return false;
+	if (!domain)
+		return false;
+	return domain->contains(key);
 }
 
-void ConfigManager::removeKey(const String &key, const String &dom) {
-	assert(!dom.empty());
-	assert(isValidDomainName(dom));
+void ConfigManager::removeKey(const String &key, const String &domName) {
+	Domain *domain = getDomain(domName);
 
-	if (dom == kTransientDomain)
-		_transientDomain.erase(key);
-	else if (_gameDomains.contains(dom))
-		_gameDomains[dom].erase(key);
-	else if (_globalDomains.contains(dom))
-		_globalDomains[dom].erase(key);
-	else
-		error("Removing key '%s' from non-existent domain '%s'", key.c_str(), dom.c_str());
+	if (!domain)
+		error("ConfigManager::removeKey(%s, %s) called on non-existent domain",
+					key.c_str(), domName.c_str());
+
+	domain->erase(key);
 }
 
 
 #pragma mark -
 
 
-const String & ConfigManager::get(const String &key, const String &domain) const {
-	assert(isValidDomainName(domain));
+const String & ConfigManager::get(const String &key) const {
+	if (_transientDomain.contains(key))
+		return _transientDomain[key];
+	else if (_activeDomain && _activeDomain->contains(key))
+		return (*_activeDomain)[key];
+	else if (_appDomain.contains(key))
+		return _appDomain[key];
+	else if (_defaultsDomain.contains(key))
+		return _defaultsDomain[key];
 
-	// Search the domains in the following order:
-	// 1) Transient domain
-	// 2) Active game domain (if any)
-	// 3) All global domains
-	// 4) The defaults
+#if !(defined(PALMOS_ARM) || defined(PALMOS_DEBUG) || defined(__GP32__))
+	return String::emptyString;
+#else
+	return ConfMan._emptyString;
+#endif
+}
 
-	if ((domain.empty() || domain == kTransientDomain) && _transientDomain.contains(key))
-		return _transientDomain[key];
+const String & ConfigManager::get(const String &key, const String &domName) const {
+	// FIXME: For now we continue to allow empty domName to indicate
+	// "use 'default' domain". This is mainly needed for the SCUMM ConfigDialog
+	// and should be removed ASAP.
+	if (domName.empty())
+		return get(key);
 
-	const String &dom = domain.empty() ? _activeDomain : domain;
+	const Domain *domain = getDomain(domName);
 
-	if (!dom.empty() && _gameDomains.contains(dom) && _gameDomains[dom].contains(key))
-		return _gameDomains[dom][key];
+	if (!domain)
+		error("ConfigManager::get(%s,%s) called on non-existent domain",
+								key.c_str(), domName.c_str());
 
-	DomainMap::const_iterator iter;
-	for (iter = _globalDomains.begin(); iter != _globalDomains.end(); ++iter) {
-		if (iter->_value.contains(key))
-			return iter->_value[key];
+	if (domain->contains(key))
+		return (*domain)[key];
+
+	return _defaultsDomain.get(key);
+
+	if (!domain->contains(key)) {
+#if 1
+#if !(defined(PALMOS_ARM) || defined(PALMOS_DEBUG) || defined(__GP32__))
+	return String::emptyString;
+#else
+	return ConfMan._emptyString;
+#endif
+#else
+		error("ConfigManager::get(%s,%s) called on non-existent key",
+					key.c_str(), domName.c_str());
+#endif
 	}
 
-	return _defaultsDomain.get(key);
+	return (*domain)[key];
 }
 
-int ConfigManager::getInt(const String &key, const String &dom) const {
-	String value(get(key, dom));
+int ConfigManager::getInt(const String &key, const String &domName) const {
+	String value(get(key, domName));
 	char *errpos;
 
 	// For now, be tolerant against missing config keys. Strictly spoken, it is
@@ -390,67 +426,91 @@
 
 	int ivalue = (int)strtol(value.c_str(), &errpos, 10);
 	if (value.c_str() == errpos)
-		error("Config file buggy: '%s' is not a valid integer", errpos);
+		error("ConfigManager::getInt(%s,%s): '%s' is not a valid integer",
+					key.c_str(), domName.c_str(), errpos);
 
 	return ivalue;
 }
 
-bool ConfigManager::getBool(const String &key, const String &dom) const {
-	String value(get(key, dom));
+bool ConfigManager::getBool(const String &key, const String &domName) const {
+	String value(get(key, domName));
 
-	if ((value == trueStr) || (value == "yes") || (value == "1"))
+	if ((value == "true") || (value == "yes") || (value == "1"))
 		return true;
-	if ((value == falseStr) || (value == "no") || (value == "0"))
+	if ((value == "false") || (value == "no") || (value == "0"))
 		return false;
 
-	error("Config file buggy: '%s' is not a valid bool", value.c_str());
+	error("ConfigManager::getBool(%s,%s): '%s' is not a valid bool",
+				key.c_str(), domName.c_str(), value.c_str());
 }
 
 
 #pragma mark -
 
 
-void ConfigManager::set(const String &key, const String &value, const String &dom) {
-	assert(isValidDomainName(dom));
-	if (dom.empty()) {
-		// Remove the transient domain value
-		_transientDomain.erase(key);
+void ConfigManager::set(const String &key, const String &value) {
+	// Remove the transient domain value, if any.
+	_transientDomain.erase(key);
 
-		if (_activeDomain.empty())
-			_globalDomains[kApplicationDomain][key] = value;
-		else
-			_gameDomains[_activeDomain][key] = value;
+	// Write the new key/value pair into the active domain, resp. into
+	// the application domain if no game domain is active.
+	if (_activeDomain)
+		(*_activeDomain)[key] = value;
+	else
+		_appDomain[key] = value;
+}
 
-	} else {
+void ConfigManager::set(const String &key, const String &value, const String &domName) {
+	// FIXME: For now we continue to allow empty domName to indicate
+	// "use 'default' domain". This is mainly needed for the SCUMM ConfigDialog
+	// and should be removed ASAP.
+	if (domName.empty())
+		return set(key, value);
 
-		if (dom == kTransientDomain)
-			_transientDomain[key] = value;
-		else {
-			if (_globalDomains.contains(dom)) {
-				_globalDomains[dom][key] = value;
-				if (_activeDomain.empty() || !_gameDomains[_activeDomain].contains(key))
-					_transientDomain.erase(key);
-			} else {
-				_gameDomains[dom][key] = value;
-				if (dom == _activeDomain)
-					_transientDomain.erase(key);
-			}
+	Domain *domain = getDomain(domName);
+
+	if (!domain)
+		error("ConfigManager::set(%s,%s,%s) called on non-existent domain",
+					key.c_str(), value.c_str(), domName.c_str());
+
+	(*domain)[key] = value;
+	
+	// TODO/FIXME: We used to erase the given key from the transient domain
+	// here. Do we still want to do that?
+	// It was probably there to simplify the options dialogs code:
+	// Imagine you are editing the current options (via the SCUMM ConfigDialog,
+	// for example). If you edit the game domain for that, but a matching
+	// entry in the transient domain is present, than your changes may not take
+	// effect. So you want to remove the key from the transient domain before
+	// adding it to the active domain.
+	// But doing this here seems rather evil... need to comb the options dialog
+	// code to find out if it's still necessary, and if that's the case, how
+	// to replace it in a clean fashion...
+/*
+	if (domName == kTransientDomain)
+		_transientDomain[key] = value;
+	else {
+		if (domName == kApplicationDomain) {
+			_appDomain[key] = value;
+			if (_activeDomainName.empty() || !_gameDomains[_activeDomainName].contains(key))
+				_transientDomain.erase(key);
+		} else {
+			_gameDomains[domName][key] = value;
+			if (domName == _activeDomainName)
+				_transientDomain.erase(key);
 		}
 	}
+*/
 }
 
-void ConfigManager::set(const String &key, const char *value, const String &dom) {
-	set(key, String(value), dom);
-}
-
-void ConfigManager::set(const String &key, int value, const String &dom) {
+void ConfigManager::set(const String &key, int value, const String &domName) {
 	char tmp[128];
 	snprintf(tmp, sizeof(tmp), "%i", value);
-	set(key, String(tmp), dom);
+	set(key, String(tmp), domName);
 }
 
-void ConfigManager::set(const String &key, bool value, const String &dom) {
-	set(key, value ? trueStr : falseStr, dom);
+void ConfigManager::set(const String &key, bool value, const String &domName) {
+	set(key, String(value ? "true" : "false"), domName);
 }
 
 
@@ -472,24 +532,27 @@
 }
 
 void ConfigManager::registerDefault(const String &key, bool value) {
-	registerDefault(key, value ? trueStr : falseStr);
+	registerDefault(key, value ? "true" : "false");
 }
 
 
 #pragma mark -
 
 
-void ConfigManager::setActiveDomain(const String &domain) {
-	assert(!domain.empty());
-	assert(isValidDomainName(domain));
-	_activeDomain = domain;
-	_gameDomains[domain];
+void ConfigManager::setActiveDomain(const String &domName) {
+	if (domName.empty()) {
+		_activeDomain = 0;
+	} else {
+		assert(isValidDomainName(domName));
+		_activeDomain = & _gameDomains[domName];
+	}
+	_activeDomainName = domName;
 }
 
-void ConfigManager::removeGameDomain(const String &domain) {
-	assert(!domain.empty());
-	assert(isValidDomainName(domain));
-	_gameDomains.erase(domain);
+void ConfigManager::removeGameDomain(const String &domName) {
+	assert(!domName.empty());
+	assert(isValidDomainName(domName));
+	_gameDomains.erase(domName);
 }
 
 void ConfigManager::renameGameDomain(const String &oldName, const String &newName) {
@@ -511,9 +574,9 @@
 	_gameDomains.erase(oldName);
 }
 
-bool ConfigManager::hasGameDomain(const String &domain) const {
-	assert(!domain.empty());
-	return isValidDomainName(domain) && _gameDomains.contains(domain);
+bool ConfigManager::hasGameDomain(const String &domName) const {
+	assert(!domName.empty());
+	return isValidDomainName(domName) && _gameDomains.contains(domName);
 }
 
 

Modified: scummvm/trunk/common/config-manager.h
===================================================================
--- scummvm/trunk/common/config-manager.h	2006-04-15 12:19:38 UTC (rev 21905)
+++ scummvm/trunk/common/config-manager.h	2006-04-15 13:12:03 UTC (rev 21906)
@@ -92,37 +92,64 @@
 	void				loadDefaultConfigFile();
 	void				loadConfigFile(const String &filename);
 
+	/**
+	 * Retrieve the config domain with the given name.
+	 * @param domName	the name of the domain to retrieve
+	 * @return pointer to the domain, or 0 if the domain doesn't exist.
+	 */
+	Domain *			getDomain(const String &domName);
+	const Domain *		getDomain(const String &domName) const;
+
+
+	//
+	// Generic access methods: No domain specified, use the values from the
+	// various domains in the order of their priority.
+	//
+	
 	bool				hasKey(const String &key) const;
-	bool				hasKey(const String &key, const String &dom) const;
+	const String &		get(const String &key) const;
+	void				set(const String &key, const String &value);
 
-	void				removeKey(const String &key, const String &dom);
+#if 1
+	//
+	// Domain specific access methods: Acces *one specific* domain and modify it.
+	// TODO: I'd like to get rid of most of those if possible, or at least reduce
+	// their usage, by using getDomain as often as possible. For example in the
+	// options dialog code...
+	//
 
-	const String &		get(const String &key, const String &dom = String::emptyString) const;
-	int					getInt(const String &key, const String &dom = String::emptyString) const;
-	bool				getBool(const String &key, const String &dom = String::emptyString) const;
+	bool				hasKey(const String &key, const String &domName) const;
+	const String &		get(const String &key, const String &domName) const;
+	void				set(const String &key, const String &value, const String &domName);
 
-	void				set(const String &key, const String &value, const String &dom = String::emptyString);
-	void				set(const String &key, const char *value, const String &dom = String::emptyString);
-	void				set(const String &key, int value, const String &dom = String::emptyString);
-	void				set(const String &key, bool value, const String &dom = String::emptyString);
+	void				removeKey(const String &key, const String &domName);
+#endif
 
+	//
+	// Some additional convenience accessors.
+	//
+	int					getInt(const String &key, const String &domName = String::emptyString) const;
+	bool				getBool(const String &key, const String &domName = String::emptyString) const;
+	void				set(const String &key, int value, const String &domName = String::emptyString);
+	void				set(const String &key, bool value, const String &domName = String::emptyString);
+
+
 	void				registerDefault(const String &key, const String &value);
 	void				registerDefault(const String &key, const char *value);
 	void				registerDefault(const String &key, int value);
 	void				registerDefault(const String &key, bool value);
-//	...
 
 	void				flushToDisk();
 
-	void				setActiveDomain(const String &domain);
-	const String &		getActiveDomain() const { return _activeDomain; }
+	void				setActiveDomain(const String &domName);
+	const String &		getActiveDomain() const { return _activeDomainName; }
 
-//	void				addDomain(const String &name);
-	void				removeGameDomain(const String &name);
+//	void				addDomain(const String &domName);
+	void				removeGameDomain(const String &domName);
 	void				renameGameDomain(const String &oldName, const String &newName);
-	bool				hasGameDomain(const String &domain) const;
+	bool				hasGameDomain(const String &domName) const;
 	const DomainMap &	getGameDomains() const { return _gameDomains; }
-
+	
 /*
 	TODO: Callback/change notification system
 	typedef void (*ConfigCallback)(const ConstString &key, void *refCon);
@@ -140,12 +167,14 @@
 
 	Domain			_transientDomain;
 	DomainMap		_gameDomains;
-	DomainMap		_globalDomains;
+	Domain			_appDomain;
 	Domain			_defaultsDomain;
 
 	StringList		_domainSaveOrder;
 
-	String			_activeDomain;
+	String			_activeDomainName;
+	Domain *		_activeDomain;
+
 	String			_filename;
 };
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.





More information about the Scummvm-git-logs mailing list