| Index: include/AdblockPlus/FilterEngine.h |
| =================================================================== |
| --- a/include/AdblockPlus/FilterEngine.h |
| +++ b/include/AdblockPlus/FilterEngine.h |
| @@ -1,39 +1,63 @@ |
| #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 Subscription |
| { |
| - std::string url; |
| - std::string title; |
| + friend class FilterEngine; |
| + public: |
| + const std::string GetProperty(const std::string& name) const; |
|
Felix Dahlke
2013/04/05 08:50:20
Why return a const value here? It's copied on retu
Wladimir Palant
2013/04/05 12:15:16
True of course, originally I tried to return a ref
|
| + int GetIntProperty(const std::string& name) const; |
| + void SetProperty(const std::string& name, const std::string& value); |
| + void SetIntProperty(const std::string& name, int value); |
| - Subscription(const std::string& url, const std::string& title); |
| + bool IsListed() const; |
| + void AddToList(); |
| + void RemoveFromList(); |
| + void UpdateFilters(); |
| + |
| + private: |
| +#if FILTER_ENGINE_STUBS |
| + Subscription(FilterEngine& filterEngine, const std::string& url); |
| + |
| + FilterEngine& filterEngine; |
| + std::map<std::string,std::string> properties; |
|
Felix Dahlke
2013/04/05 08:50:20
We generally put a space after a comma in template
|
| + std::map<std::string,int> intProperties; |
|
Felix Dahlke
2013/04/05 08:50:20
Will we need more types than string and int? We'll
Wladimir Palant
2013/04/05 12:15:16
Yes, we need booleans as well. Other than that sub
|
| +#else |
| + Subscription(); |
| +#endif |
| }; |
| + typedef void (*SubscriptionsCallback)(const std::vector<Subscription*>&); |
| + |
| class FilterEngine |
| { |
| + 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(); |
| + Subscription& GetSubscription(const std::string& url); |
| + const std::vector<Subscription*>& GetListedSubscriptions() const; |
| + void FetchAvailableSubscriptions(SubscriptionsCallback callback); |
| bool Matches(const std::string& url, |
| - const std::string& contentType) const; |
| + const std::string& contentType, |
| + const std::string& documentUrl) const; |
| std::vector<std::string> GetElementHidingRules() const; |
| private: |
| JsEngine& jsEngine; |
| - std::vector<Subscription> subscriptions; |
| +#if FILTER_ENGINE_STUBS |
| + std::map<std::string,Subscription*> knownSubscriptions; |
| + std::vector<Subscription*> listedSubscriptions; |
| +#endif |
| }; |
| } |
| #endif |