summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-02-06 16:52:51 +0100
committerBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-02-06 16:52:51 +0100
commit7fb170a87a4551a048487361b7aaf29963dc7b99 (patch)
treeb2f532ec8e6aa54f475c0e48b3ef5d39b6ee3b6c /src/plugins
parent3ceb415e4f81b50b8e46351e9e586794ebf08644 (diff)
parentb211c02c53f3ed38c7d124d6a74f22ee17df7063 (diff)
Merge branch 'master' of somweyr.de:ousia
Conflicts: application/src/plugins/xml/XmlParser.cpp
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/xml/XmlParser.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/plugins/xml/XmlParser.cpp b/src/plugins/xml/XmlParser.cpp
index 6a2b160..7b4b1b3 100644
--- a/src/plugins/xml/XmlParser.cpp
+++ b/src/plugins/xml/XmlParser.cpp
@@ -77,8 +77,7 @@ public:
class DocumentField : public Node {
public:
- DocumentField(Manager &mgr, std::string name, Handle<Node> parent,
- Handle<FieldDescriptor> descriptor)
+ DocumentField(Manager &mgr, std::string name, Handle<Node> parent)
: Node(mgr, name, parent)
{
}
@@ -93,7 +92,7 @@ class DocumentChildHandler : public Handler {
public:
using Handler::Handler;
- void preamble(Hanlde<Node> parentNode, std::string &fieldName,
+ void preamble(Handle<Node> parentNode, std::string &fieldName,
DocumentEntity *&parent, bool &inField)
{
// check if the parent in the structure tree was an explicit field
@@ -691,8 +690,8 @@ public:
// StructuredClass as child to it.
scope().resolve<Descriptor>(
parentNameNode->getName(), strct, logger(),
- [&type, &name, &optional](Handle<Node> parent, Handle<Node> strct,
- Logger &logger) {
+ [type, name, optional](Handle<Node> parent, Handle<Node> strct,
+ Logger &logger) {
if (parent != nullptr) {
Rooted<FieldDescriptor> field =
parent.cast<Descriptor>()->createFieldDescriptor(
@@ -727,9 +726,9 @@ public:
// resolve the parent, get the referenced field and add the declared
// StructuredClass as child to it.
scope().resolve<Descriptor>(parentNameNode->getName(), strct, logger(),
- [&name, &loc](Handle<Node> parent,
- Handle<Node> strct,
- Logger &logger) {
+ [name, loc](Handle<Node> parent,
+ Handle<Node> strct,
+ Logger &logger) {
if (parent != nullptr) {
auto res = parent.cast<Descriptor>()->resolve(
RttiTypes::FieldDescriptor, name);
@@ -861,9 +860,16 @@ static const ParserState Document =
.parent(&None)
.createdNodeType(&RttiTypes::Document)
.elementHandler(DocumentHandler::create)
- .childHandler(DocumentChildHandler::create)
.arguments({Argument::String("name", "")});
+static const ParserState DocumentChild =
+ ParserStateBuilder()
+ .parent(&Document)
+ .createdNodeTypes({&RttiTypes::StructureNode,
+ &RttiTypes::AnnotationEntity,
+ &RttiTypes::DocumentField})
+ .elementHandler(DocumentChildHandler::create);
+
/* Domain states */
static const ParserState Domain = ParserStateBuilder()
.parents({&None, &Document})
@@ -1017,6 +1023,7 @@ static const ParserState Include =
static const std::multimap<std::string, const ParserState *> XmlStates{
{"document", &Document},
+ {"*", &DocumentChild},
{"domain", &Domain},
{"struct", &DomainStruct},
{"annotation", &DomainAnnotation},