diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-04-12 17:34:09 +0200 |
---|---|---|
committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2016-04-25 22:24:15 +0200 |
commit | be79585f0e81b27ce3dc6b94f1f502ff86dcef68 (patch) | |
tree | bce664b2d1827e4e7d12f674c51471d586fd3b2c /src/core/parser/stack/DocumentHandler.cpp | |
parent | ebc411f2bc9cb7b1742ed5211d36a2b2ac57cdb5 (diff) |
Pass "isImplicit" flag to Handler::fieldStart
Diffstat (limited to 'src/core/parser/stack/DocumentHandler.cpp')
-rw-r--r-- | src/core/parser/stack/DocumentHandler.cpp | 9 |
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, |