diff options
| author | Vicent Marti | 2008-08-04 16:59:55 +0000 | 
|---|---|---|
| committer | Vicent Marti | 2008-08-04 16:59:55 +0000 | 
| commit | 85c36885f5bbf2d47276c7702f1b8ccbf22ecc34 (patch) | |
| tree | dd3aeb61b4bcc37431b383c36f429d082f418965 /common/xmlparser.cpp | |
| parent | 461e2f42149e3b1914b3c7b392d076c186c6d0a1 (diff) | |
| download | scummvm-rg350-85c36885f5bbf2d47276c7702f1b8ccbf22ecc34.tar.gz scummvm-rg350-85c36885f5bbf2d47276c7702f1b8ccbf22ecc34.tar.bz2 scummvm-rg350-85c36885f5bbf2d47276c7702f1b8ccbf22ecc34.zip | |
Theme layout parsing. Work in progress.
svn-id: r33613
Diffstat (limited to 'common/xmlparser.cpp')
| -rw-r--r-- | common/xmlparser.cpp | 27 | 
1 files changed, 14 insertions, 13 deletions
| diff --git a/common/xmlparser.cpp b/common/xmlparser.cpp index 5ea10f2278..526e6e6fb1 100644 --- a/common/xmlparser.cpp +++ b/common/xmlparser.cpp @@ -98,22 +98,23 @@ bool XMLParser::parseActiveKey(bool closed) {  	ParserNode *key = _activeKey.top();  	XMLKeyLayout *layout = (_activeKey.size() == 1) ? _XMLkeys : getParentNode(key)->layout; -	if (layout->children.contains(key->name) == false) -		return parserError("Unexpected key in the active scope: '%s'.", key->name.c_str()); -		 -	key->layout = layout->children[key->name]; +	if (layout->children.contains(key->name)) { +		key->layout = layout->children[key->name]; -	Common::StringMap localMap = key->values; +		Common::StringMap localMap = key->values; -	for (Common::List<XMLKeyLayout::XMLKeyProperty>::const_iterator i = key->layout->properties.begin(); i != key->layout->properties.end(); ++i) { -		if (localMap.contains(i->name)) -			localMap.erase(i->name); -		else if (i->required) -			return parserError("Missing required property '%s' inside key '%s'", i->name.c_str(), key->name.c_str()); -	} +		for (Common::List<XMLKeyLayout::XMLKeyProperty>::const_iterator i = key->layout->properties.begin(); i != key->layout->properties.end(); ++i) { +			if (localMap.contains(i->name)) +				localMap.erase(i->name); +			else if (i->required) +				return parserError("Missing required property '%s' inside key '%s'", i->name.c_str(), key->name.c_str()); +		} -	if (key->layout->anyProps == false && localMap.empty() == false) -		return parserError("Unhandled property inside key '%s': '%s'", key->name.c_str(), localMap.begin()->_key.c_str()); +		if (key->layout->anyProps == false && localMap.empty() == false) +			return parserError("Unhandled property inside key '%s': '%s'", key->name.c_str(), localMap.begin()->_key.c_str()); +	} else if (layout->anyKeys == false) { +		return parserError("Unexpected key in the active scope: '%s'.", key->name.c_str()); +	}  	// check if any of the parents must be ignored.  	// if a parent is ignored, all children are too. | 
