diff options
| author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-02-15 20:58:05 +0100 | 
|---|---|---|
| committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-02-15 20:58:05 +0100 | 
| commit | b7ffeb3dca889aee1c878e2ef0f07644f910dba2 (patch) | |
| tree | aeb0641149cbbdc0c7c7984eca2e0b5c0cf2edef | |
| parent | e2e32eef55406519c744002a404e7e5ca66b29a1 (diff) | |
Made OsxmlEvents interface consistent with Stack commands
| -rw-r--r-- | src/formats/osxml/OsxmlEventParser.cpp | 2 | ||||
| -rw-r--r-- | src/formats/osxml/OsxmlEventParser.hpp | 24 | ||||
| -rw-r--r-- | test/formats/osxml/OsxmlEventParserTest.cpp | 41 | 
3 files changed, 32 insertions, 35 deletions
| diff --git a/src/formats/osxml/OsxmlEventParser.cpp b/src/formats/osxml/OsxmlEventParser.cpp index b4aff77..7404960 100644 --- a/src/formats/osxml/OsxmlEventParser.cpp +++ b/src/formats/osxml/OsxmlEventParser.cpp @@ -329,7 +329,7 @@ static void xmlStartElementHandler(void *ref, const XML_Char *name,  		// Just issue a "commandStart" event in any other case  		Variant nameVar = Variant::fromString(nameStr);  		nameVar.setLocation(nameLoc); -		parser->getEvents().commandStart(nameVar, args); +		parser->getEvents().command(nameVar, args);  	}  } diff --git a/src/formats/osxml/OsxmlEventParser.hpp b/src/formats/osxml/OsxmlEventParser.hpp index aa20ea9..e39245f 100644 --- a/src/formats/osxml/OsxmlEventParser.hpp +++ b/src/formats/osxml/OsxmlEventParser.hpp @@ -58,34 +58,36 @@ public:  	 *  	 * @param name is a string variant containing name and location of the  	 * command. -	 * @param args is a map variant containing the arguments that were given -	 * to the command. +	 * @param args is a map containing the arguments that were given to the +	 * command.  	 */ -	virtual void commandStart(Variant name, Variant args) = 0; +	virtual void command(const Variant &name, const Variant::mapType &args) = 0;  	/**  	 * Called whenever an annotation starts. Note that this implicitly always  	 * starts the default field of the annotation.  	 * -	 * @param name is a string variant containing the name of the annotation -	 * class and the location of the annotation definition. +	 * @param className is a string variant containing the name of the +	 * annotation class and the location of the annotation definition.  	 * @param args is a map variant containing the arguments that were given  	 * to the annotation definition.  	 */ -	virtual void annotationStart(Variant name, Variant args) = 0; +	virtual void annotationStart(const Variant &className, +	                             const Variant::mapType &args) = 0;  	/**  	 * Called whenever the range of an annotation ends. The callee must  	 * disambiguate the actual annotation that is finished here.  	 * -	 * @param name is a string variant containing the name of the annotation -	 * class that should end here. May be empty (or nullptr), if no elementName -	 * has been specified at the end of the annotation. +	 * @param className is a string variant containing the name of the +	 * annotation class that should end here. May be empty (or nullptr), if no +	 * elementName has been specified at the end of the annotation.  	 * @param elementName is the name of the annotation element that should be  	 * ended here. May be empty (or nullptr), if no elementName has been  	 * specified at the end of the annotation.  	 */ -	virtual void annotationEnd(Variant name, Variant elementName) = 0; +	virtual void annotationEnd(const Variant &className, +	                           const Variant &elementName) = 0;  	/**  	 * Called whenever the default field which was implicitly started by @@ -105,7 +107,7 @@ public:  	 * @param data is the already parsed data that should be passed to the  	 * handler.  	 */ -	virtual void data(Variant data) = 0; +	virtual void data(const Variant &data) = 0;  };  /** diff --git a/test/formats/osxml/OsxmlEventParserTest.cpp b/test/formats/osxml/OsxmlEventParserTest.cpp index 06c800f..3293370 100644 --- a/test/formats/osxml/OsxmlEventParserTest.cpp +++ b/test/formats/osxml/OsxmlEventParserTest.cpp @@ -31,7 +31,7 @@ static TerminalLogger logger(std::cerr, true);  namespace {  enum class OsxmlEvent { -	COMMAND_START, +	COMMAND,  	ANNOTATION_START,  	ANNOTATION_END,  	FIELD_END, @@ -42,22 +42,24 @@ class TestOsxmlEventListener : public OsxmlEvents {  public:  	std::vector<std::pair<OsxmlEvent, Variant>> events; -	void commandStart(Variant name, Variant args) override +	void command(const Variant &name, const Variant::mapType &args) override  	{ -		events.emplace_back(OsxmlEvent::COMMAND_START, +		events.emplace_back(OsxmlEvent::COMMAND,  		                    Variant::arrayType{name, args});  	} -	void annotationStart(Variant name, Variant args) override +	void annotationStart(const Variant &className, +	                     const Variant::mapType &args) override  	{  		events.emplace_back(OsxmlEvent::ANNOTATION_START, -		                    Variant::arrayType{name, args}); +		                    Variant::arrayType{className, args});  	} -	void annotationEnd(Variant name, Variant elementName) override +	void annotationEnd(const Variant &className, +	                   const Variant &elementName) override  	{  		events.emplace_back(OsxmlEvent::ANNOTATION_END, -		                    Variant::arrayType{name, elementName}); +		                    Variant::arrayType{className, elementName});  	}  	void fieldEnd() override @@ -65,7 +67,7 @@ public:  		events.emplace_back(OsxmlEvent::FIELD_END, Variant::arrayType{});  	} -	void data(Variant data) override +	void data(const Variant &data) override  	{  		events.emplace_back(OsxmlEvent::DATA, Variant::arrayType{data});  	} @@ -91,7 +93,7 @@ TEST(OsxmlEventParser, simpleCommandWithArgs)  	//                        0          1            2            3  	std::vector<std::pair<OsxmlEvent, Variant>> expectedEvents{ -	    {OsxmlEvent::COMMAND_START, +	    {OsxmlEvent::COMMAND,  	     Variant::arrayType{  	         "a", Variant::mapType{  	                  {"name", "test"}, {"a", 1}, {"b", 2}, {"c", "blub"}}}}, @@ -131,11 +133,9 @@ TEST(OsxmlEventParser, magicTopLevelTag)  	const char *testString = "<ousia><a/><b/></ousia>";  	std::vector<std::pair<OsxmlEvent, Variant>> expectedEvents{ -	    {OsxmlEvent::COMMAND_START, -	     Variant::arrayType{{"a", Variant::mapType{}}}}, +	    {OsxmlEvent::COMMAND, Variant::arrayType{{"a", Variant::mapType{}}}},  	    {OsxmlEvent::FIELD_END, Variant::arrayType{}}, -	    {OsxmlEvent::COMMAND_START, -	     Variant::arrayType{{"b", Variant::mapType{}}}}, +	    {OsxmlEvent::COMMAND, Variant::arrayType{{"b", Variant::mapType{}}}},  	    {OsxmlEvent::FIELD_END, Variant::arrayType{}}};  	auto events = parseXml(testString); @@ -147,9 +147,8 @@ TEST(OsxmlEventParser, magicTopLevelTagInside)  	const char *testString = "<a><ousia/></a>";  	std::vector<std::pair<OsxmlEvent, Variant>> expectedEvents{ -	    {OsxmlEvent::COMMAND_START, -	     Variant::arrayType{{"a", Variant::mapType{}}}}, -	    {OsxmlEvent::COMMAND_START, +	    {OsxmlEvent::COMMAND, Variant::arrayType{{"a", Variant::mapType{}}}}, +	    {OsxmlEvent::COMMAND,  	     Variant::arrayType{{"ousia", Variant::mapType{}}}},  	    {OsxmlEvent::FIELD_END, Variant::arrayType{}},  	    {OsxmlEvent::FIELD_END, Variant::arrayType{}}}; @@ -165,8 +164,7 @@ TEST(OsxmlEventParser, commandWithDataPreserveWhitespace)  	//                        0         1          2  	std::vector<std::pair<OsxmlEvent, Variant>> expectedEvents{ -	    {OsxmlEvent::COMMAND_START, -	     Variant::arrayType{"a", Variant::mapType{}}}, +	    {OsxmlEvent::COMMAND, Variant::arrayType{"a", Variant::mapType{}}},  	    {OsxmlEvent::DATA, Variant::arrayType{"  hello  \n world "}},  	    {OsxmlEvent::FIELD_END, Variant::arrayType{}}}; @@ -185,8 +183,7 @@ TEST(OsxmlEventParser, commandWithDataTrimWhitespace)  	//                        0         1          2  	std::vector<std::pair<OsxmlEvent, Variant>> expectedEvents{ -	    {OsxmlEvent::COMMAND_START, -	     Variant::arrayType{"a", Variant::mapType{}}}, +	    {OsxmlEvent::COMMAND, Variant::arrayType{"a", Variant::mapType{}}},  	    {OsxmlEvent::DATA, Variant::arrayType{"hello  \n world"}},  	    {OsxmlEvent::FIELD_END, Variant::arrayType{}}}; @@ -205,8 +202,7 @@ TEST(OsxmlEventParser, commandWithDataCollapseWhitespace)  	//                        0         1          2  	std::vector<std::pair<OsxmlEvent, Variant>> expectedEvents{ -	    {OsxmlEvent::COMMAND_START, -	     Variant::arrayType{"a", Variant::mapType{}}}, +	    {OsxmlEvent::COMMAND, Variant::arrayType{"a", Variant::mapType{}}},  	    {OsxmlEvent::DATA, Variant::arrayType{"hello world"}},  	    {OsxmlEvent::FIELD_END, Variant::arrayType{}}}; @@ -217,6 +213,5 @@ TEST(OsxmlEventParser, commandWithDataCollapseWhitespace)  	ASSERT_EQ(5U, events[1].second.asArray()[0].getLocation().getStart());  	ASSERT_EQ(19U, events[1].second.asArray()[0].getLocation().getEnd());  } -  } | 
