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);  | 
