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

Side by Side Diff: compiled/StringScanner.h

Issue 29333474: Issue 4125 - [emscripten] Convert filter classes to C++ (Closed)
Patch Set: Split up String class into two, cleaned up RegExpFilter methods Created Feb. 4, 2016, 7:20 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « compiled/StringMap.h ('k') | compiled/WhitelistFilter.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #ifndef ADBLOCK_PLUS_STRING_SCANNER_H
2 #define ADBLOCK_PLUS_STRING_SCANNER_H
3
4 #include "String.h"
5
6 class StringScanner
7 {
8 private:
9 const String mStr;
10 String::size_type mPos;
11 String::size_type mEnd;
12 String::value_type mTerminator;
13 public:
14 StringScanner(const String& str, String::size_type pos = 0,
15 String::value_type terminator = u'\0')
16 : mStr(str), mPos(pos), mEnd(str.length()), mTerminator(terminator) {}
17
18 bool done()
19 {
20 return mPos >= mEnd;
21 }
22
23 String::size_type position()
24 {
25 return mPos - 1;
26 }
27
28 String::value_type next()
29 {
30 String::value_type result = done() ? mTerminator : mStr[mPos];
31 mPos++;
32 return result;
33 }
34
35 bool skipOne(String::value_type ch)
36 {
37 if (!done() && mStr[mPos] == ch)
38 {
39 mPos++;
40 return true;
41 }
42
43 return false;
44 }
45
46 bool skip(String::value_type ch)
47 {
48 String::size_type oldPos = mPos;
49 while (!done() && mStr[mPos] == ch)
50 mPos++;
51 return oldPos != mPos;
52 }
53 };
54
55 #endif
OLDNEW
« 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