summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-15 20:58:05 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-15 20:58:05 +0100
commitb7ffeb3dca889aee1c878e2ef0f07644f910dba2 (patch)
treeaeb0641149cbbdc0c7c7984eca2e0b5c0cf2edef
parente2e32eef55406519c744002a404e7e5ca66b29a1 (diff)
Made OsxmlEvents interface consistent with Stack commands
-rw-r--r--src/formats/osxml/OsxmlEventParser.cpp2
-rw-r--r--src/formats/osxml/OsxmlEventParser.hpp24
-rw-r--r--test/formats/osxml/OsxmlEventParserTest.cpp41
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());
}
-
}