| // 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 |