Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: compiled/StringScanner.h

Issue 29333474: Issue 4125 - [emscripten] Convert filter classes to C++ (Closed)
Patch Set: Renamed bindings.h into bindings.ipp Created Feb. 23, 2016, 9:30 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « compiled/StringMap.h ('k') | compiled/WhitelistFilter.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: compiled/StringScanner.h
===================================================================
new file mode 100644
--- /dev/null
+++ b/compiled/StringScanner.h
@@ -0,0 +1,52 @@
+#pragma once
+
+#include "String.h"
+
+class StringScanner
+{
+private:
+ const DependentString mStr;
+ String::size_type mPos;
+ String::size_type mEnd;
+ String::value_type mTerminator;
+public:
+ StringScanner(const String& str, String::size_type pos = 0,
+ String::value_type terminator = u'\0')
+ : mStr(str), mPos(pos), mEnd(str.length()), mTerminator(terminator) {}
+
+ bool done()
+ {
+ return mPos >= mEnd;
+ }
+
+ String::size_type position()
+ {
+ return mPos - 1;
+ }
+
+ String::value_type next()
+ {
+ String::value_type result = done() ? mTerminator : mStr[mPos];
+ mPos++;
+ return result;
+ }
+
+ bool skipOne(String::value_type ch)
+ {
+ if (!done() && mStr[mPos] == ch)
+ {
+ mPos++;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool skip(String::value_type ch)
+ {
+ String::size_type oldPos = mPos;
sergei 2016/06/16 21:16:10 What about reusing of skipOne? bool skipped = fal
Wladimir Palant 2016/12/06 10:47:01 Done.
+ while (!done() && mStr[mPos] == ch)
+ mPos++;
+ return oldPos != mPos;
+ }
+};
« no previous file with comments | « compiled/StringMap.h ('k') | compiled/WhitelistFilter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld