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. |