aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backends/common/virtual-keyboard-parser.cpp2
-rw-r--r--backends/common/virtual-keyboard-parser.h6
-rw-r--r--backends/common/virtual-keyboard.cpp2
-rw-r--r--backends/common/virtual-keyboard.h6
-rw-r--r--backends/events/default/default-events.cpp2
-rw-r--r--backends/events/default/default-events.h2
-rw-r--r--common/xmlparser.cpp10
-rw-r--r--common/xmlparser.h14
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);