| Index: compiled/ActiveFilter.h |
| =================================================================== |
| new file mode 100644 |
| --- /dev/null |
| +++ b/compiled/ActiveFilter.h |
| @@ -0,0 +1,55 @@ |
| +#pragma once |
| + |
| +#include <emscripten.h> |
| + |
| +#include "Filter.h" |
| +#include "StringMap.h" |
| + |
| +#define FILTER_PROPERTY(type, name, getter, setter) \ |
| + private:\ |
| + type name;\ |
| + public:\ |
| + type EMSCRIPTEN_KEEPALIVE getter() const\ |
| + {\ |
| + return name;\ |
| + }\ |
| + void EMSCRIPTEN_KEEPALIVE setter(type value)\ |
| + {\ |
| + if (name != value)\ |
| + {\ |
| + type oldvalue = name;\ |
| + name = value;\ |
| + String action(u"filter."_str #name);\ |
| + EM_ASM_ARGS({\ |
| + var filter = new (exports[Filter_mapping[$2]])($1);\ |
| + FilterNotifier.triggerListeners(getStringData($0), filter, $3, $4);\ |
|
sergei
2016/02/17 12:54:31
Why do we need to instantiate a new `filter` and c
Wladimir Palant
2016/02/18 16:06:38
What is `this`? That's JavaScript code, all it got
sergei
2016/02/22 12:45:33
Acknowledged, sorry, overlooked it.
|
| + }, &action, this, GetType(), value, oldvalue);\ |
| + }\ |
| + } |
| + |
| +class ActiveFilter : public Filter |
| +{ |
| +protected: |
| + typedef StringMap<bool> DomainMap; |
| + typedef StringSet SitekeySet; |
| + void ParseDomains(const String& domains, char16_t separator) const; |
|
sergei
2016/02/17 12:54:29
`String::value_type` instead of `char16_t` would b
Wladimir Palant
2016/02/18 16:06:31
Done.
|
| + void AddSitekey(const String& sitekey) const; |
|
sergei
2016/02/17 12:54:30
I have removed const on the methods above, `mutabl
Wladimir Palant
2016/02/18 16:06:32
I'm not really sure how you've done that. If AddSi
sergei
2016/02/22 12:45:35
Yeah, I did it using const_cast, it's difficult to
sergei
2016/06/16 21:16:08
Actually there is another option with only one mut
|
| + virtual DomainMap* GetDomains() const; |
| + virtual SitekeySet* GetSitekeys() const; |
| + mutable std::unique_ptr<DomainMap> mDomains; |
| + mutable std::unique_ptr<SitekeySet> mSitekeys; |
| +private: |
| + bool mIgnoreTrailingDot; |
| +public: |
| + ActiveFilter(const String& text, bool ignoreTrailingDot); |
| + FILTER_PROPERTY(bool, mDisabled, GetDisabled, SetDisabled); |
| + FILTER_PROPERTY(unsigned int, mHitCount, GetHitCount, SetHitCount); |
| + FILTER_PROPERTY(unsigned int, mLastHit, GetLastHit, SetLastHit); |
| + static void ToLower(String& str, String::size_type start, |
| + String::size_type end); |
| + bool EMSCRIPTEN_KEEPALIVE IsActiveOnDomain(DependentString& docDomain, |
| + const String& sitekey) const; |
| + bool EMSCRIPTEN_KEEPALIVE IsActiveOnlyOnDomain(DependentString& docDomain) const; |
| + bool EMSCRIPTEN_KEEPALIVE IsGeneric() const; |
| + OwnedString EMSCRIPTEN_KEEPALIVE Serialize() const; |
| +}; |