summaryrefslogtreecommitdiff
path: root/src/core/parser/stack/DocumentHandler.cpp
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-04-12 17:34:09 +0200
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2016-04-25 22:24:15 +0200
commitbe79585f0e81b27ce3dc6b94f1f502ff86dcef68 (patch)
treebce664b2d1827e4e7d12f674c51471d586fd3b2c /src/core/parser/stack/DocumentHandler.cpp
parentebc411f2bc9cb7b1742ed5211d36a2b2ac57cdb5 (diff)
Pass "isImplicit" flag to Handler::fieldStart
Diffstat (limited to 'src/core/parser/stack/DocumentHandler.cpp')
-rw-r--r--src/core/parser/stack/DocumentHandler.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/core/parser/stack/DocumentHandler.cpp b/src/core/parser/stack/DocumentHandler.cpp
index e6af615..0912eb6 100644
--- a/src/core/parser/stack/DocumentHandler.cpp
+++ b/src/core/parser/stack/DocumentHandler.cpp
@@ -87,7 +87,9 @@ Rooted<FieldDescriptor> DocumentField::getDescriptor()
/* DocumentChildHandler */
DocumentChildHandler::DocumentChildHandler(const HandlerData &handlerData)
- : Handler(handlerData), isExplicitField(false)
+ : Handler(handlerData),
+ isExplicitField(false),
+ inImplicitDefaultField(false)
{
// Register all user defined tokens if this has not yet been done
if (!scope().getFlag(ParserFlag::POST_USER_DEFINED_TOKEN_REGISTRATION)) {
@@ -670,13 +672,15 @@ void DocumentChildHandler::end()
}
}
-bool DocumentChildHandler::fieldStart(bool &isDefault, size_t fieldIdx)
+bool DocumentChildHandler::fieldStart(bool &isDefault, bool isImplicit,
+ size_t fieldIdx)
{
if (isExplicitField) {
// In case of explicit fields we do not want to create another field.
isDefault = true;
return fieldIdx == 0;
}
+ inImplicitDefaultField = isImplicit;
Rooted<Node> parentNode = scope().getLeaf();
assert(parentNode->isa(&RttiTypes::StructuredEntity) ||
@@ -717,6 +721,7 @@ void DocumentChildHandler::fieldEnd()
popTokens();
rollbackPath();
}
+ inImplicitDefaultField = false;
}
bool DocumentChildHandler::convertData(Handle<FieldDescriptor> field,