| Index: include/AdblockPlus/FilterEngine.h |
| =================================================================== |
| --- a/include/AdblockPlus/FilterEngine.h |
| +++ b/include/AdblockPlus/FilterEngine.h |
| @@ -1,21 +1,22 @@ |
| #ifndef ADBLOCKPLUS_FILTER_ENGINE_H |
| #define ADBLOCKPLUS_FILTER_ENGINE_H |
| #include <vector> |
| #include <map> |
| #include <string> |
| +#include <tr1/memory> |
|
Felix Dahlke
2013/04/08 15:03:59
As of GCC 4.6 (we can assume that on Android with
Wladimir Palant
2013/04/09 05:56:34
Not sure about the NDK but on Linux #include <memo
|
| namespace AdblockPlus |
| { |
| class JsEngine; |
| class FilterEngine; |
| - class JSObject |
| + class JsObject |
| { |
| 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)); |
| @@ -26,45 +27,51 @@ namespace AdblockPlus |
| 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); |
| + 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(); |
| + JsObject(); |
| #endif |
| }; |
| - class Filter : public JSObject |
| + enum FilterType {BLOCKING_RULE, EXCEPTION_RULE, |
|
Felix Dahlke
2013/04/08 15:03:59
I'd move this into the public section of Filter, s
|
| + ELEMHIDE_RULE, ELEMHIDE_EXCEPTION_RULE, |
| + COMMENT_RULE, INVALID_RULE}; |
| + |
| + class Filter : public JsObject, |
| + public std::tr1::enable_shared_from_this<Filter> |
| { |
| 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 |
| + class Subscription : public JsObject, |
| + public std::tr1::enable_shared_from_this<Subscription> |
| { |
| friend class FilterEngine; |
| public: |
| bool IsListed() const; |
| void AddToList(); |
| void RemoveFromList(); |
| void UpdateFilters(); |
| @@ -72,38 +79,40 @@ namespace AdblockPlus |
| private: |
| #if FILTER_ENGINE_STUBS |
| Subscription(FilterEngine& filterEngine, const std::string& url); |
| #else |
| Subscription(); |
| #endif |
| }; |
| - typedef void (*SubscriptionsCallback)(const std::vector<Subscription*>&); |
| + typedef std::tr1::shared_ptr<Filter> FilterPtr; |
| + typedef std::tr1::shared_ptr<Subscription> SubscriptionPtr; |
| + typedef void (*SubscriptionsCallback)(const std::vector<SubscriptionPtr>&); |
| class FilterEngine |
| { |
| friend class Filter; |
| friend class Subscription; |
| public: |
| explicit FilterEngine(JsEngine& jsEngine); |
| Filter& GetFilter(const std::string& text); |
| Subscription& GetSubscription(const std::string& url); |
| - const std::vector<Filter*>& GetListedFilters() const; |
| - const std::vector<Subscription*>& GetListedSubscriptions() const; |
| + const std::vector<FilterPtr>& GetListedFilters() const; |
| + const std::vector<SubscriptionPtr>& GetListedSubscriptions() const; |
| void FetchAvailableSubscriptions(SubscriptionsCallback callback); |
| - Filter* Matches(const std::string& url, |
| - const std::string& contentType, |
| - const std::string& documentUrl); |
| + FilterPtr Matches(const std::string& url, |
| + const std::string& contentType, |
| + const std::string& documentUrl); |
| std::vector<std::string> GetElementHidingSelectors(const std::string& domain) const; |
| private: |
| JsEngine& jsEngine; |
| #if FILTER_ENGINE_STUBS |
| - std::map<std::string, Filter*> knownFilters; |
| - std::vector<Filter*> listedFilters; |
| - std::map<std::string, Subscription*> knownSubscriptions; |
| - std::vector<Subscription*> listedSubscriptions; |
| + std::map<std::string, FilterPtr> knownFilters; |
| + std::vector<FilterPtr> listedFilters; |
| + std::map<std::string, SubscriptionPtr> knownSubscriptions; |
| + std::vector<SubscriptionPtr> listedSubscriptions; |
| #endif |
| }; |
| } |
| #endif |