Index: third_party/re2/re2/prefilter_tree.h |
diff --git a/third_party/re2/re2/prefilter_tree.h b/third_party/re2/re2/prefilter_tree.h |
deleted file mode 100644 |
index abea55d588db0cfd471d810f0a233902ad65f273..0000000000000000000000000000000000000000 |
--- a/third_party/re2/re2/prefilter_tree.h |
+++ /dev/null |
@@ -1,131 +0,0 @@ |
-// Copyright 2009 The RE2 Authors. All Rights Reserved. |
-// Use of this source code is governed by a BSD-style |
-// license that can be found in the LICENSE file. |
- |
-// The PrefilterTree class is used to form an AND-OR tree of strings |
-// that would trigger each regexp. The 'prefilter' of each regexp is |
-// added tp PrefilterTree, and then PrefilterTree is used to find all |
-// the unique strings across the prefilters. During search, by using |
-// matches from a string matching engine, PrefilterTree deduces the |
-// set of regexps that are to be triggered. The 'string matching |
-// engine' itself is outside of this class, and the caller can use any |
-// favorite engine. PrefilterTree provides a set of strings (called |
-// atoms) that the user of this class should use to do the string |
-// matching. |
-// |
-#ifndef RE2_PREFILTER_TREE_H_ |
-#define RE2_PREFILTER_TREE_H_ |
- |
-#include "util/util.h" |
-#include "util/sparse_array.h" |
- |
-namespace re2 { |
- |
-typedef SparseArray<int> IntMap; |
-typedef map<int, int> StdIntMap; |
- |
-class Prefilter; |
- |
-class PrefilterTree { |
- public: |
- PrefilterTree(); |
- ~PrefilterTree(); |
- |
- // Adds the prefilter for the next regexp. Note that we assume that |
- // Add called sequentially for all regexps. All Add calls |
- // must precede Compile. |
- void Add(Prefilter* prefilter); |
- |
- // The Compile returns a vector of string in atom_vec. |
- // Call this after all the prefilters are added through Add. |
- // No calls to Add after Compile are allowed. |
- // The caller should use the returned set of strings to do string matching. |
- // Each time a string matches, the corresponding index then has to be |
- // and passed to RegexpsGivenStrings below. |
- void Compile(vector<string>* atom_vec); |
- |
- // Given the indices of the atoms that matched, returns the indexes |
- // of regexps that should be searched. The matched_atoms should |
- // contain all the ids of string atoms that were found to match the |
- // content. The caller can use any string match engine to perform |
- // this function. This function is thread safe. |
- void RegexpsGivenStrings(const vector<int>& matched_atoms, |
- vector<int>* regexps) const; |
- |
- // Print debug prefilter. Also prints unique ids associated with |
- // nodes of the prefilter of the regexp. |
- void PrintPrefilter(int regexpid); |
- |
- |
- // Each unique node has a corresponding Entry that helps in |
- // passing the matching trigger information along the tree. |
- struct Entry { |
- public: |
- // How many children should match before this node triggers the |
- // parent. For an atom and an OR node, this is 1 and for an AND |
- // node, it is the number of unique children. |
- int propagate_up_at_count; |
- |
- // When this node is ready to trigger the parent, what are the indices |
- // of the parent nodes to trigger. The reason there may be more than |
- // one is because of sharing. For example (abc | def) and (xyz | def) |
- // are two different nodes, but they share the atom 'def'. So when |
- // 'def' matches, it triggers two parents, corresponding to the two |
- // different OR nodes. |
- StdIntMap* parents; |
- |
- // When this node is ready to trigger the parent, what are the |
- // regexps that are triggered. |
- vector<int> regexps; |
- }; |
- |
- private: |
- // This function assigns unique ids to various parts of the |
- // prefilter, by looking at if these nodes are already in the |
- // PrefilterTree. |
- void AssignUniqueIds(vector<string>* atom_vec); |
- |
- // Given the matching atoms, find the regexps to be triggered. |
- void PropagateMatch(const vector<int>& atom_ids, |
- IntMap* regexps) const; |
- |
- // Returns the prefilter node that has the same NodeString as this |
- // node. For the canonical node, returns node. |
- Prefilter* CanonicalNode(Prefilter* node); |
- |
- // A string that uniquely identifies the node. Assumes that the |
- // children of node has already been assigned unique ids. |
- string NodeString(Prefilter* node) const; |
- |
- // Recursively constructs a readable prefilter string. |
- string DebugNodeString(Prefilter* node) const; |
- |
- // Used for debugging. |
- void PrintDebugInfo(); |
- |
- // These are all the nodes formed by Compile. Essentially, there is |
- // one node for each unique atom and each unique AND/OR node. |
- vector<Entry> entries_; |
- |
- // Map node string to canonical Prefilter node. |
- map<string, Prefilter*> node_map_; |
- |
- // indices of regexps that always pass through the filter (since we |
- // found no required literals in these regexps). |
- vector<int> unfiltered_; |
- |
- // vector of Prefilter for all regexps. |
- vector<Prefilter*> prefilter_vec_; |
- |
- // Atom index in returned strings to entry id mapping. |
- vector<int> atom_index_to_id_; |
- |
- // Has the prefilter tree been compiled. |
- bool compiled_; |
- |
- DISALLOW_COPY_AND_ASSIGN(PrefilterTree); |
-}; |
- |
-} // namespace |
- |
-#endif // RE2_PREFILTER_TREE_H_ |