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

Unified Diff: compiled/filter/Filter.h

Issue 29574591: Issue 5258 - Implement Filter::As<>() method to make working with filters easier from C++ code (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore
Patch Set: Removed unnecessary base class check Created Oct. 13, 2017, 4:57 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/filter/ElemHideFilter.cpp ('k') | compiled/filter/Filter.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: compiled/filter/Filter.h
===================================================================
--- a/compiled/filter/Filter.h
+++ b/compiled/filter/Filter.h
@@ -30,32 +30,52 @@ protected:
OwnedString mText;
public:
enum Type
{
UNKNOWN = 0,
INVALID = 1,
COMMENT = 2,
- BLOCKING = 3,
- WHITELIST = 4,
- ELEMHIDE = 5,
- ELEMHIDEEXCEPTION = 6,
- ELEMHIDEEMULATION = 7,
- VALUE_COUNT = 8
+ ACTIVE = 4,
+ REGEXP = ACTIVE | 8,
+ BLOCKING = REGEXP | 16,
+ WHITELIST = REGEXP | 32,
+ ELEMHIDEBASE = ACTIVE | 64,
+ ELEMHIDE = ELEMHIDEBASE | 128,
+ ELEMHIDEEXCEPTION = ELEMHIDEBASE | 256,
+ ELEMHIDEEMULATION = ELEMHIDEBASE | 512
};
explicit Filter(Type type, const String& text);
~Filter();
Type mType;
const String& BINDINGS_EXPORTED GetText() const
{
return mText;
}
OwnedString BINDINGS_EXPORTED Serialize() const;
static Filter* BINDINGS_EXPORTED FromText(DependentString& text);
+
+ template<typename T>
+ T* As()
+ {
+ if ((mType & T::classType) != T::classType)
+ return nullptr;
+
+ return static_cast<T*>(this);
+ }
+
+ template<typename T>
+ const T* As() const
+ {
+ if ((mType & T::classType) != T::classType)
+ return nullptr;
+
+ return static_cast<const T*>(this);
+ }
};
typedef intrusive_ptr<Filter> FilterPtr;
« no previous file with comments | « compiled/filter/ElemHideFilter.cpp ('k') | compiled/filter/Filter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld