Index: third_party/re2/re2/set.h |
diff --git a/third_party/re2/re2/set.h b/third_party/re2/re2/set.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d7164257f16e596c99187857173a48e359912c49 |
--- /dev/null |
+++ b/third_party/re2/re2/set.h |
@@ -0,0 +1,55 @@ |
+// Copyright 2010 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. |
+ |
+#ifndef RE2_SET_H |
+#define RE2_SET_H |
+ |
+#include <utility> |
+#include <vector> |
+ |
+#include "re2/re2.h" |
+ |
+namespace re2 { |
+using std::vector; |
+ |
+// An RE2::Set represents a collection of regexps that can |
+// be searched for simultaneously. |
+class RE2::Set { |
+ public: |
+ Set(const RE2::Options& options, RE2::Anchor anchor); |
+ ~Set(); |
+ |
+ // Add adds regexp pattern to the set, interpreted using the RE2 options. |
+ // (The RE2 constructor's default options parameter is RE2::UTF8.) |
+ // Add returns the regexp index that will be used to identify |
+ // it in the result of Match, or -1 if the regexp cannot be parsed. |
+ // Indices are assigned in sequential order starting from 0. |
+ // Error returns do not increment the index. |
+ // If an error occurs and error != NULL, *error will hold an error message. |
+ int Add(const StringPiece& pattern, string* error); |
+ |
+ // Compile prepares the Set for matching. |
+ // Add must not be called again after Compile. |
+ // Compile must be called before FullMatch or PartialMatch. |
+ // Compile may return false if it runs out of memory. |
+ bool Compile(); |
+ |
+ // Match returns true if text matches any of the regexps in the set. |
+ // If so, it fills v with the indices of the matching regexps. |
+ bool Match(const StringPiece& text, vector<int>* v) const; |
+ |
+ private: |
+ RE2::Options options_; |
+ RE2::Anchor anchor_; |
+ vector<re2::Regexp*> re_; |
+ re2::Prog* prog_; |
+ bool compiled_; |
+ //DISALLOW_EVIL_CONSTRUCTORS(Set); |
+ Set(const Set&); |
+ void operator=(const Set&); |
+}; |
+ |
+} // namespace re2 |
+ |
+#endif // RE2_SET_H |