Chromium Code Reviews| Index: extensions/common/matcher/substring_set_matcher.h |
| diff --git a/extensions/common/matcher/substring_set_matcher.h b/extensions/common/matcher/substring_set_matcher.h |
| index 4ba8ec3acc364413a3f6dc16c25e9ed5db7f57b9..f4b9d2dd076c5bd26fc42a90538013dba874ceca 100644 |
| --- a/extensions/common/matcher/substring_set_matcher.h |
| +++ b/extensions/common/matcher/substring_set_matcher.h |
| @@ -5,6 +5,7 @@ |
| #ifndef EXTENSIONS_COMMON_MATCHER_SUBSTRING_SET_MATCHER_H_ |
| #define EXTENSIONS_COMMON_MATCHER_SUBSTRING_SET_MATCHER_H_ |
| +#include <limits> |
| #include <map> |
| #include <set> |
| #include <string> |
| @@ -80,21 +81,22 @@ class SubstringSetMatcher { |
| class AhoCorasickNode { |
| public: |
| // Key: label of the edge, value: node index in |tree_| of parent class. |
| - typedef std::map<char, int> Edges; |
| + typedef std::map<char, unsigned> Edges; |
| typedef std::set<StringPattern::ID> Matches; |
| + static const unsigned kNoSuchEdge = ~0; |
| + |
| AhoCorasickNode(); |
| ~AhoCorasickNode(); |
| AhoCorasickNode(const AhoCorasickNode& other); |
| AhoCorasickNode& operator=(const AhoCorasickNode& other); |
| - bool HasEdge(char c) const; |
| - int GetEdge(char c) const; |
| - void SetEdge(char c, int node); |
| + unsigned GetEdge(char c) const; |
| + void SetEdge(char c, unsigned node); |
| const Edges& edges() const { return edges_; } |
| - int failure() const { return failure_; } |
| - void set_failure(int failure) { failure_ = failure; } |
| + unsigned failure() const { return failure_; } |
| + void set_failure(unsigned failure) { failure_ = failure; } |
| void AddMatch(StringPattern::ID id); |
| void AddMatches(const Matches& matches); |
| @@ -105,12 +107,16 @@ class SubstringSetMatcher { |
| Edges edges_; |
| // Node index that failure edge leads to. |
| - int failure_; |
| + unsigned failure_; |
| // Identifiers of matches. |
| Matches matches_; |
| }; |
| + typedef std::map<StringPattern::ID, const StringPattern*> |
| + SubstringPatternSet; |
| + typedef std::vector<const StringPattern*> SubstringPatternVector; |
|
vabr (Chromium)
2013/05/05 23:36:49
While adding the new typedef I also moved this acc
|
| + |
| void RebuildAhoCorasickTree(); |
| // Inserts a path for |pattern->pattern()| into the tree and adds |
| @@ -121,9 +127,9 @@ class SubstringSetMatcher { |
| // Set of all registered StringPatterns. Used to regenerate the |
| // Aho-Corasick tree in case patterns are registered or unregistered. |
| - typedef std::map<StringPattern::ID, const StringPattern*> |
| - SubstringPatternSet; |
| SubstringPatternSet patterns_; |
| + // Copy of |patterns_| sorted by the pattern string. |
| + SubstringPatternVector sorted_patterns_; |
|
vabr (Chromium)
2013/05/05 23:36:49
I guess once I create the vector, it might be easi
|
| // The nodes of a Aho-Corasick tree. |
| std::vector<AhoCorasickNode> tree_; |