From 2416462060ef54cb737688f648d150313b82e5f4 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Sun, 12 Apr 2015 17:38:36 +0200 Subject: Pass "greedy" flag to Handler::startToken --- src/core/parser/stack/Stack.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/core/parser/stack/Stack.cpp') diff --git a/src/core/parser/stack/Stack.cpp b/src/core/parser/stack/Stack.cpp index 2fe4a8f..c67f43c 100644 --- a/src/core/parser/stack/Stack.cpp +++ b/src/core/parser/stack/Stack.cpp @@ -116,6 +116,12 @@ public: */ bool hadDefaultField : 1; + /** + * Set to false, if the handler is not greedy (true is the default value). + * If false, the handler will only be passed one piece of "data" at most. + */ + bool greedy : 1; + /** * Default constructor of the HandlerInfo class. */ @@ -187,7 +193,8 @@ HandlerInfo::HandlerInfo(std::shared_ptr handler) inDefaultField(false), inImplicitDefaultField(false), inValidField(false), - hadDefaultField(false) + hadDefaultField(false), + greedy(true) { } @@ -203,7 +210,8 @@ HandlerInfo::HandlerInfo(bool implicit, bool inField, bool inDefaultField, inDefaultField(inDefaultField), inImplicitDefaultField(inImplicitDefaultField), inValidField(true), - hadDefaultField(false) + hadDefaultField(false), + greedy(true) { } @@ -1073,8 +1081,9 @@ bool StackImpl::handleOpenTokens(Logger &logger, const Token &token, // the valid flag HandlerInfo &info = currentInfo(); info.valid = false; + info.greedy = (!shortForm) || descr.greedyShortForm; try { - info.valid = handler->startToken(descr.descriptor); + info.valid = handler->startToken(descr.descriptor, info.greedy); } catch (LoggableException ex) { logger.log(ex); -- cgit v1.2.3