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

Side by Side Diff: compiled/RegExpFilter.h

Issue 29333474: Issue 4125 - [emscripten] Convert filter classes to C++ (Closed)
Patch Set: Optimized hash lookup performance a bit Created Feb. 8, 2016, 7:11 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
OLDNEW
(Empty)
1 #pragma once
2
3 #include "Filter.h"
4 #include "ActiveFilter.h"
5
6 enum class TrippleState {YES, NO, ANY};
7
8 struct RegExpFilterData
9 {
10 mutable String::size_type mPatternStart;
11 union
12 {
13 mutable int mRegexpId;
14 mutable String::size_type mPatternEnd;
15 };
16 mutable String::size_type mDomainsStart;
17 mutable String::size_type mDomainsEnd;
18 mutable String::size_type mSitekeysStart;
19 mutable String::size_type mSitekeysEnd;
20 int mContentType;
21 bool mMatchCase;
22 TrippleState mThirdParty;
23 TrippleState mCollapse;
24
25 bool RegExpParsingDone() const
26 {
27 return mPatternStart == String::npos;
28 }
29
30 void SetRegExp(int regexpId) const
31 {
32 mRegexpId = regexpId;
33 mPatternStart = String::npos;
34 }
35
36 bool HasRegExp() const
37 {
38 return RegExpParsingDone() && mRegexpId;
39 }
40
41 const DependentString GetRegExpSource(const String& text) const
42 {
43 return DependentString(text, mPatternStart, mPatternEnd - mPatternStart);
44 }
45
46 bool DomainsParsingDone() const
47 {
48 return mDomainsStart == String::npos;
49 }
50
51 void SetDomainsParsingDone() const
52 {
53 mDomainsStart = String::npos;
54 }
55
56 const DependentString GetDomainsSource(const String& text) const
57 {
58 return DependentString(text, mDomainsStart, mDomainsEnd - mDomainsStart);
59 }
60
61 bool SitekeyParsingDone() const
62 {
63 return mSitekeysStart == String::npos;
64 }
65
66 void SetSitekeysParsingDone() const
67 {
68 mSitekeysStart = String::npos;
69 }
70
71 const DependentString GetSitekeysSource(const String& text) const
72 {
73 return DependentString(text, mSitekeysStart, mSitekeysEnd - mSitekeysStart);
74 }
75 };
76
77 class RegExpFilter : public ActiveFilter, protected RegExpFilterData
78 {
79 private:
80 void ParseSitekeys(const String& sitekeys) const;
81
82 protected:
83 virtual DomainMap* GetDomains() const;
84 virtual SitekeySet* GetSitekeys() const;
85 public:
86 RegExpFilter(const String& text, const RegExpFilterData& data);
87 ~RegExpFilter();
88 static Type Parse(DependentString& text, OwnedString& error,
89 RegExpFilterData& data);
90 EMSCRIPTEN_KEEPALIVE static void InitJSTypes();
91 static OwnedString RegExpFromSource(const String& source);
92 Type GetType() const;
93 EMSCRIPTEN_KEEPALIVE bool Matches(const String& location, int typeMask,
94 DependentString& docDomain, bool thirdParty, const String& sitekey) const;
95 };
OLDNEW

Powered by Google App Engine
This is Rietveld