From f713b1d393230e7083727d457623fdac878eb248 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Sun, 8 Feb 2015 18:48:07 +0100 Subject: DynamicTokenizer now gets the reader as a parameter to read and peek -- the beauty of this tokenizer is that it has no internal state depending on the reader, so it doesn't need to hold a reference to it --- src/plugins/plain/DynamicTokenizer.cpp | 35 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 18 deletions(-) (limited to 'src/plugins/plain/DynamicTokenizer.cpp') diff --git a/src/plugins/plain/DynamicTokenizer.cpp b/src/plugins/plain/DynamicTokenizer.cpp index a8f2317..f2cfcd1 100644 --- a/src/plugins/plain/DynamicTokenizer.cpp +++ b/src/plugins/plain/DynamicTokenizer.cpp @@ -345,14 +345,13 @@ public: /* Class DynamicTokenizer */ -DynamicTokenizer::DynamicTokenizer(CharReader &reader, - WhitespaceMode whitespaceMode) - : reader(reader), whitespaceMode(whitespaceMode), nextTokenTypeId(0) +DynamicTokenizer::DynamicTokenizer(WhitespaceMode whitespaceMode) + : whitespaceMode(whitespaceMode), nextTokenTypeId(0) { } template -bool DynamicTokenizer::next(DynamicToken &token) +bool DynamicTokenizer::next(CharReader &reader, DynamicToken &token) { // If we're in the read mode, reset the char reader peek position to the // current read position @@ -437,28 +436,28 @@ bool DynamicTokenizer::next(DynamicToken &token) return match.hasMatch(); } -bool DynamicTokenizer::read(DynamicToken &token) +bool DynamicTokenizer::read(CharReader &reader,DynamicToken &token) { switch (whitespaceMode) { case WhitespaceMode::PRESERVE: - return next(token); + return next(reader, token); case WhitespaceMode::TRIM: - return next(token); + return next(reader, token); case WhitespaceMode::COLLAPSE: - return next(token); + return next(reader, token); } return false; } -bool DynamicTokenizer::peek(DynamicToken &token) +bool DynamicTokenizer::peek(CharReader &reader,DynamicToken &token) { switch (whitespaceMode) { case WhitespaceMode::PRESERVE: - return next(token); + return next(reader, token); case WhitespaceMode::TRIM: - return next(token); + return next(reader, token); case WhitespaceMode::COLLAPSE: - return next(token); + return next(reader, token); } return false; } @@ -530,16 +529,16 @@ WhitespaceMode DynamicTokenizer::getWhitespaceMode() { return whitespaceMode; } /* Explicitly instantiate all possible instantiations of the "next" member function */ template bool DynamicTokenizer::next( - DynamicToken &token); + CharReader &reader, DynamicToken &token); template bool DynamicTokenizer::next( - DynamicToken &token); + CharReader &reader, DynamicToken &token); template bool DynamicTokenizer::next( - DynamicToken &token); + CharReader &reader,DynamicToken &token); template bool DynamicTokenizer::next( - DynamicToken &token); + CharReader &reader,DynamicToken &token); template bool DynamicTokenizer::next( - DynamicToken &token); + CharReader &reader,DynamicToken &token); template bool DynamicTokenizer::next( - DynamicToken &token); + CharReader &reader,DynamicToken &token); } -- cgit v1.2.3