diff options
-rw-r--r-- | backends/common/virtual-keyboard-parser.cpp | 2 | ||||
-rw-r--r-- | backends/common/virtual-keyboard-parser.h | 6 | ||||
-rw-r--r-- | backends/common/virtual-keyboard.cpp | 2 | ||||
-rw-r--r-- | backends/common/virtual-keyboard.h | 6 | ||||
-rw-r--r-- | backends/events/default/default-events.cpp | 2 | ||||
-rw-r--r-- | backends/events/default/default-events.h | 2 | ||||
-rw-r--r-- | common/xmlparser.cpp | 10 | ||||
-rw-r--r-- | common/xmlparser.h | 14 |
8 files changed, 30 insertions, 14 deletions
diff --git a/backends/common/virtual-keyboard-parser.cpp b/backends/common/virtual-keyboard-parser.cpp index 6da5f690ba..d45ee7fdee 100644 --- a/backends/common/virtual-keyboard-parser.cpp +++ b/backends/common/virtual-keyboard-parser.cpp @@ -29,7 +29,7 @@ #include "graphics/imageman.h" #include "common/util.h" -namespace GUI { +namespace Common { VirtualKeyboardParser::VirtualKeyboardParser(VirtualKeyboard *kbd) : XMLParser() { _keyboard = kbd; diff --git a/backends/common/virtual-keyboard-parser.h b/backends/common/virtual-keyboard-parser.h index 64651dfa13..4423ae7b35 100644 --- a/backends/common/virtual-keyboard-parser.h +++ b/backends/common/virtual-keyboard-parser.h @@ -23,13 +23,13 @@ * */ -#ifndef GUI_VIRTUAL_KEYBOARD_PARSER -#define GUI_VIRTUAL_KEYBOARD_PARSER +#ifndef COMMON_VIRTUAL_KEYBOARD_PARSER +#define COMMON_VIRTUAL_KEYBOARD_PARSER #include "common/xmlparser.h" #include "backends/common/virtual-keyboard.h" -namespace GUI { +namespace Common { class VirtualKeyboardParser : public Common::XMLParser { diff --git a/backends/common/virtual-keyboard.cpp b/backends/common/virtual-keyboard.cpp index d19471b6bd..0ac6e4efad 100644 --- a/backends/common/virtual-keyboard.cpp +++ b/backends/common/virtual-keyboard.cpp @@ -30,7 +30,7 @@ #include "graphics/imageman.h" #include "common/unzip.h" -namespace GUI { +namespace Common { VirtualKeyboard::VirtualKeyboard() : _currentMode(0), _keyDown(0) { assert(g_system); diff --git a/backends/common/virtual-keyboard.h b/backends/common/virtual-keyboard.h index b41f346989..a0a678ba86 100644 --- a/backends/common/virtual-keyboard.h +++ b/backends/common/virtual-keyboard.h @@ -23,8 +23,8 @@ * */ -#ifndef GUI_VIRTUAL_KEYBOARD_H -#define GUI_VIRTUAL_KEYBOARD_H +#ifndef COMMON_VIRTUAL_KEYBOARD_H +#define COMMON_VIRTUAL_KEYBOARD_H class OSystem; @@ -36,7 +36,7 @@ class OSystem; #include "common/str.h" #include "graphics/surface.h" -namespace GUI { +namespace Common { class VirtualKeyboardParser; diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index a3630b1d73..edb8f662e8 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -192,7 +192,7 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : _hasPlaybackEvent = false; } - _vk = new GUI::VirtualKeyboard(); + _vk = new Common::VirtualKeyboard(); } DefaultEventManager::~DefaultEventManager() { diff --git a/backends/events/default/default-events.h b/backends/events/default/default-events.h index c21fb41b16..4472b1115f 100644 --- a/backends/events/default/default-events.h +++ b/backends/events/default/default-events.h @@ -45,7 +45,7 @@ use a subclass of EventProvider. class DefaultEventManager : public Common::EventManager { OSystem *_boss; - GUI::VirtualKeyboard *_vk; + Common::VirtualKeyboard *_vk; Common::Point _mousePos; int _buttonState; diff --git a/common/xmlparser.cpp b/common/xmlparser.cpp index 3452db9e00..d0c89a9d3e 100644 --- a/common/xmlparser.cpp +++ b/common/xmlparser.cpp @@ -143,10 +143,7 @@ bool XMLParser::parse() { _pos = 0; _activeKey.clear(); - while (_text[_pos]) { - if (_state == kParserError) - break; - + while (_text[_pos] && _state != kParserError) { if (skipSpaces()) continue; @@ -197,6 +194,11 @@ bool XMLParser::parse() { case kParserNeedPropertyName: if (activeClosure) { + if (!closedKeyCallback(_activeKey.top()->name)) { + parserError("Missing data when closing key '%s'.", _activeKey.top()->name.c_str()); + break; + } + activeClosure = false; delete _activeKey.pop(); diff --git a/common/xmlparser.h b/common/xmlparser.h index 3738b69b7b..4c77696482 100644 --- a/common/xmlparser.h +++ b/common/xmlparser.h @@ -204,6 +204,20 @@ protected: } /** + * The closed key callback function must be overloaded by inheriting classes to + * implement parser-specific functions. + * + * The closedKeyCallback is issued once a key has been finished parsing, to let + * the parser verify that all the required subkeys, etc, were included. + * + * Returns true if the key was properly closed, false otherwise. + * By default, all keys are properly closed. + */ + virtual bool closedKeyCallback(Common::String keyName) { + return true; + } + + /** * Parses the value of a given key. There's no reason to overload this. */ virtual bool parseKeyValue(Common::String keyName); |