| LEFT | RIGHT | 
|   1 #pragma once |   1 #pragma once | 
|   2  |   2  | 
|   3 #include <vector> |   3 #include <vector> | 
|   4  |   4  | 
|   5 #include "String.h" |   5 #include "String.h" | 
|   6 #include "intrusive_ptr.h" |   6 #include "intrusive_ptr.h" | 
|   7 #include "debug.h" |   7 #include "debug.h" | 
|   8  |   8  | 
|   9 class Filter : public ref_counted |   9 class Filter : public ref_counted | 
|  10 { |  10 { | 
|  11 protected: |  11 protected: | 
|  12   OwnedString mText; |  12   OwnedString mText; | 
|  13  |  13  | 
|  14 public: |  14 public: | 
|  15   explicit Filter(const String& text); |  | 
|  16   virtual ~Filter(); |  | 
|  17  |  | 
|  18   /* TODO |  | 
|  19   std::vector<Subscription> subscriptions; |  | 
|  20   */ |  | 
|  21  |  | 
|  22   EMSCRIPTEN_KEEPALIVE const DependentString GetText() const |  | 
|  23   { |  | 
|  24     return mText; |  | 
|  25   } |  | 
|  26  |  | 
|  27   enum Type |  15   enum Type | 
|  28   { |  16   { | 
|  29     UNKNOWN = 0, |  17     UNKNOWN = 0, | 
|  30     INVALID = 1, |  18     INVALID = 1, | 
|  31     COMMENT = 2, |  19     COMMENT = 2, | 
|  32     BLOCKING = 3, |  20     BLOCKING = 3, | 
|  33     WHITELIST = 4, |  21     WHITELIST = 4, | 
|  34     ELEMHIDE = 5, |  22     ELEMHIDE = 5, | 
|  35     ELEMHIDEEXCEPTION = 6, |  23     ELEMHIDEEXCEPTION = 6, | 
|  36     CSSPROPERTY = 7, |  24     CSSPROPERTY = 7, | 
|  37   }; |  25   }; | 
|  38  |  26  | 
|  39   virtual Type GetType() const = 0; |  27   explicit Filter(Type type, const String& text); | 
 |  28   ~Filter(); | 
 |  29  | 
 |  30   Type mType; | 
 |  31  | 
 |  32   /* TODO | 
 |  33   std::vector<Subscription> mSubscriptions; | 
 |  34   */ | 
 |  35  | 
 |  36   EMSCRIPTEN_KEEPALIVE const String& GetText() const | 
 |  37   { | 
 |  38     return mText; | 
 |  39   } | 
|  40  |  40  | 
|  41   EMSCRIPTEN_KEEPALIVE OwnedString Serialize() const; |  41   EMSCRIPTEN_KEEPALIVE OwnedString Serialize() const; | 
|  42  |  42  | 
|  43   static EMSCRIPTEN_KEEPALIVE Type GetType(Filter* filter) |  | 
|  44   { |  | 
|  45     return filter->GetType(); |  | 
|  46   } |  | 
|  47  |  | 
|  48   static EMSCRIPTEN_KEEPALIVE Filter* FromText(DependentString& text); |  43   static EMSCRIPTEN_KEEPALIVE Filter* FromText(DependentString& text); | 
|  49   static EMSCRIPTEN_KEEPALIVE Filter* GetKnownFilter(const String& text); |  | 
|  50 }; |  44 }; | 
|  51  |  45  | 
|  52 typedef intrusive_ptr<Filter> FilterPtr; |  46 typedef intrusive_ptr<Filter> FilterPtr; | 
| LEFT | RIGHT |