| LEFT | RIGHT |
| 1 #ifndef ADBLOCK_PLUS_ELEM_HIDE_BASE_H | 1 #pragma once |
| 2 #define ADBLOCK_PLUS_ELEM_HIDE_BASE_H | |
| 3 | 2 |
| 4 #include <cstddef> | 3 #include <cstddef> |
| 5 | 4 |
| 6 #include "ActiveFilter.h" | 5 #include "ActiveFilter.h" |
| 7 | 6 |
| 7 struct ElemHideBaseData |
| 8 { |
| 9 String::size_type mDomainsEnd; |
| 10 String::size_type mSelectorStart; |
| 11 |
| 12 bool HasDomains() const |
| 13 { |
| 14 return mDomainsEnd != 0; |
| 15 } |
| 16 |
| 17 DependentString GetDomainsSource(String& text) const |
| 18 { |
| 19 return DependentString(text, 0, mDomainsEnd); |
| 20 } |
| 21 |
| 22 const DependentString GetDomainsSource(const String& text) const |
| 23 { |
| 24 return DependentString(text, 0, mDomainsEnd); |
| 25 } |
| 26 |
| 27 DependentString GetSelector(String& text) const |
| 28 { |
| 29 return DependentString(text, mSelectorStart); |
| 30 } |
| 31 |
| 32 const DependentString GetSelector(const String& text) const |
| 33 { |
| 34 return DependentString(text, mSelectorStart); |
| 35 } |
| 36 }; |
| 37 |
| 38 struct ElemHideData; |
| 39 |
| 8 class ElemHideBase : public ActiveFilter | 40 class ElemHideBase : public ActiveFilter |
| 9 { | 41 { |
| 10 private: | 42 protected: |
| 11 String mSelector; | 43 ElemHideBaseData mData; |
| 12 public: | 44 public: |
| 13 ElemHideBase(const String& text, String::size_type domainsEnd, | 45 explicit ElemHideBase(Type type, const String& text, const ElemHideBaseData& d
ata); |
| 14 String::size_type selectorStart); | 46 static Type Parse(DependentString& text, ElemHideData& data); |
| 15 static Type Parse(const String& text, String::size_type* domainsEnd, | |
| 16 String::size_type* selectorStart, | |
| 17 String::size_type* prefixEnd = nullptr, | |
| 18 String::size_type* regexpStart = nullptr, | |
| 19 String::size_type* regexpEnd = nullptr, | |
| 20 String::size_type* suffixStart = nullptr); | |
| 21 static Filter* Create(const String& text); | |
| 22 | 47 |
| 23 const String GetSelector() const | 48 EMSCRIPTEN_KEEPALIVE const DependentString GetSelector() const |
| 24 { | 49 { |
| 25 return mSelector; | 50 return mData.GetSelector(mText); |
| 26 } | 51 } |
| 27 | 52 |
| 28 String GetSelectorDomain() const; | 53 EMSCRIPTEN_KEEPALIVE OwnedString GetSelectorDomain() const; |
| 29 }; | 54 }; |
| 30 | |
| 31 #endif | |
| LEFT | RIGHT |