| Index: include/AdblockPlus/FilterEngine.h |
| =================================================================== |
| --- a/include/AdblockPlus/FilterEngine.h |
| +++ b/include/AdblockPlus/FilterEngine.h |
| @@ -1,39 +1,109 @@ |
| #ifndef ADBLOCKPLUS_FILTER_ENGINE_H |
| #define ADBLOCKPLUS_FILTER_ENGINE_H |
| #include <vector> |
| +#include <map> |
| #include <string> |
| namespace AdblockPlus |
| { |
| class JsEngine; |
| + class FilterEngine; |
| - struct Subscription |
| + class JSObject |
| { |
| - std::string url; |
| - std::string title; |
| + public: |
| + std::string GetProperty(const std::string& name, const std::string& defaultValue) const; |
| + int GetProperty(const std::string& name, int defaultValue) const; |
| + bool GetProperty(const std::string& name, bool defaultValue) const; |
| + inline std::string GetProperty(const std::string& name, const char* defaultValue) const |
| + { |
| + return GetProperty(name, std::string(defaultValue)); |
| + } |
| - Subscription(const std::string& url, const std::string& title); |
| + void SetProperty(const std::string& name, const std::string& value); |
| + void SetProperty(const std::string& name, int value); |
| + void SetProperty(const std::string& name, bool value); |
| + inline void SetProperty(const std::string& name, const char* value) |
| + { |
| + SetProperty(name, std::string(value)); |
| + } |
| + |
| + protected: |
| +#if FILTER_ENGINE_STUBS |
| + JSObject(FilterEngine& filterEngine); |
| + |
| + FilterEngine& filterEngine; |
| + std::map<std::string, std::string> stringProperties; |
| + std::map<std::string, int> intProperties; |
| + std::map<std::string, bool> boolProperties; |
| +#else |
| + JSObject(); |
| +#endif |
| }; |
| + class Filter : public JSObject |
| + { |
| + friend class FilterEngine; |
| + |
| + public: |
| + bool IsListed() const; |
| + void AddToList(); |
| + void RemoveFromList(); |
| + |
| + private: |
| +#if FILTER_ENGINE_STUBS |
| + Filter(FilterEngine& filterEngine, const std::string& text); |
| +#else |
| + Filter(); |
| +#endif |
| + }; |
| + |
| + class Subscription : public JSObject |
| + { |
| + friend class FilterEngine; |
| + |
| + public: |
| + bool IsListed() const; |
| + void AddToList(); |
| + void RemoveFromList(); |
| + void UpdateFilters(); |
| + |
| + private: |
| +#if FILTER_ENGINE_STUBS |
| + Subscription(FilterEngine& filterEngine, const std::string& url); |
| +#else |
| + Subscription(); |
| +#endif |
| + }; |
| + |
| + typedef void (*SubscriptionsCallback)(const std::vector<Subscription*>&); |
| + |
| class FilterEngine |
| { |
| + friend class Filter; |
| + friend class Subscription; |
| public: |
| explicit FilterEngine(JsEngine& jsEngine); |
| - void AddSubscription(Subscription subscription); |
| - void RemoveSubscription(const Subscription& subscription); |
| - const Subscription* FindSubscription(const std::string& url) const; |
| - const std::vector<Subscription>& GetSubscriptions() const; |
| - void UpdateSubscriptionFilters(const Subscription& subscription); |
| - std::vector<Subscription> FetchAvailableSubscriptions(); |
| - bool Matches(const std::string& url, |
| - const std::string& contentType) const; |
| + Filter& GetFilter(const std::string& text); |
| + Subscription& GetSubscription(const std::string& url); |
| + const std::vector<Filter*>& GetListedFilters() const; |
| + const std::vector<Subscription*>& GetListedSubscriptions() const; |
| + void FetchAvailableSubscriptions(SubscriptionsCallback callback); |
| + Filter* Matches(const std::string& url, |
| + const std::string& contentType, |
| + const std::string& documentUrl); |
|
Oleksandr
2013/04/05 14:09:07
Might be just me, but based on this signature I mi
Felix Dahlke
2013/04/05 14:20:59
How would that be any less ambigous?
IMO, we shou
Wladimir Palant
2013/04/05 14:31:45
Actually, the idea was that filters and subscripti
Felix Dahlke
2013/04/05 14:43:55
Then a pointer should be fine.
You have a point i
Wladimir Palant
2013/04/08 13:51:47
I am using shared_ptr instead of raw pointers now.
|
| std::vector<std::string> GetElementHidingRules() const; |
| private: |
| JsEngine& jsEngine; |
| - std::vector<Subscription> subscriptions; |
| +#if FILTER_ENGINE_STUBS |
| + std::map<std::string, Filter*> knownFilters; |
| + std::vector<Filter*> listedFilters; |
| + std::map<std::string, Subscription*> knownSubscriptions; |
| + std::vector<Subscription*> listedSubscriptions; |
| +#endif |
| }; |
| } |
| #endif |