Index: third_party/libphonenumber/cpp/src/regexp_adapter_re2.cc |
=================================================================== |
--- third_party/libphonenumber/cpp/src/regexp_adapter_re2.cc (revision 84008) |
+++ third_party/libphonenumber/cpp/src/regexp_adapter_re2.cc (working copy) |
@@ -1,192 +0,0 @@ |
-// Copyright (C) 2011 Google Inc. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
- |
-// Author: George Yakovlev |
-#include "regexp_adapter.h" |
- |
-#include <re2/re2.h> |
-#include <re2/stringpiece.h> |
-#include <re2/re2.h> |
- |
-namespace { |
-scoped_ptr<RE2Cache> re2_cache; |
-} // namespace |
- |
-class RE2RegularExpressionInput : public RegularExpressionInput { |
- public: |
- RE2RegularExpressionInput(const char* utf8_input); |
- |
- virtual bool ConsumeRegExp(std::string const& reg_exp, |
- bool beginning_only, |
- std::string* matched_string1, |
- std::string* matched_string2); |
- virtual std::string ToString() const; |
- private: |
- StringPiece utf8_input_; |
-}; |
- |
- |
-class RE2RegularExpression : public reg_exp::RegularExpression { |
- public: |
- RE2RegularExpression(const char* utf8_regexp); |
- |
- virtual bool Consume(reg_exp::RegularExpressionInput* input_string, |
- bool beginning_only, |
- std::string* matched_string1, |
- std::string* matched_string2, |
- std::string* matched_string3) const; |
- |
- virtual bool Match(const char* input_string, |
- bool full_match, |
- std::string* matched_string) const; |
- |
- virtual bool Replace(std::string* string_to_process, |
- bool global, |
- const char* replacement_string) const; |
- private: |
- RE2 utf8_regexp_; |
-}; |
- |
-RE2RegularExpressionInput::RE2RegularExpressionInput(const char* utf8_input) |
- : utf8_input_(utf8_input) { |
- DCHECK(utf8_input); |
-} |
- |
-bool RE2RegularExpressionInput::ConsumeRegExp(std::string const& reg_exp, |
- bool beginning_only, |
- std::string* matched_string1, |
- std::string* matched_string2) { |
- if (beginning_only) { |
- if (matched_string2) |
- return RE2::Consume(&utf8_input_, |
- RE2Cache::ScopedAccess(re2_cache.get(), reg_exp), |
- matched_string1, matched_string2); |
- else if (matched_string1) |
- return RE2::Consume(&utf8_input_, |
- RE2Cache::ScopedAccess(re2_cache.get(), reg_exp), |
- matched_string1); |
- else |
- return RE2::Consume(&utf8_input_, |
- RE2Cache::ScopedAccess(re2_cache.get(), reg_exp)); |
- } else { |
- if (matched_string2) |
- return RE2::FindAndConsume(&utf8_input_, |
- RE2Cache::ScopedAccess(re2_cache.get(), |
- reg_exp), |
- matched_string1, matched_string2); |
- else if (matched_string1) |
- return RE2::FindAndConsume(&utf8_input_, |
- RE2Cache::ScopedAccess(re2_cache.get(), |
- reg_exp), |
- matched_string1); |
- else |
- return RE2::FindAndConsume(&utf8_input_, |
- RE2Cache::ScopedAccess(re2_cache.get(), |
- reg_exp)); |
- } |
-} |
- |
-std::string RE2RegularExpressionInput::ToString() const { |
- utf8_input_.ToString(); |
-} |
- |
-RE2RegularExpression::RE2RegularExpression(const char* utf8_regexp) |
- : utf8_regexp_(utf8_regexp) { |
- DCHECK(utf8_regexp); |
-} |
- |
-bool RE2RegularExpression::Consume(RegularExpressionInput* input_string, |
- bool beginning_only, |
- std::string* matched_string1, |
- std::string* matched_string2, |
- std::string* matched_string3) const { |
- DCHECK(input_string); |
- // matched_string1 may be NULL |
- // matched_string2 may be NULL |
- if (beginning_only) { |
- if (matched_string3) { |
- return RE2::Consume(input_string, utf8_regexp_, |
- matched_string1, matched_string2, matched_string3); |
- } else if (matched_string2) { |
- return RE2::Consume(input_string, utf8_regexp_, |
- matched_string1, matched_string2); |
- } else if (matched_string1) { |
- return RE2::Consume(input_string, utf8_regexp_, matched_string1); |
- } else { |
- return RE2::Consume(input_string, utf8_regexp_); |
- } |
- } else { |
- if (matched_string3) { |
- return RE2::FindAndConsume(input_string, utf8_regexp_, |
- matched_string1, matched_string2, |
- matched_string3); |
- } else if (matched_string2) { |
- return RE2::FindAndConsume(input_string, utf8_regexp_, |
- matched_string1, matched_string2); |
- } else if (matched_string1) { |
- return RE2::FindAndConsume(input_string, utf8_regexp_, matched_string1); |
- } else { |
- return RE2::FindAndConsume(input_string, utf8_regexp_); |
- } |
- } |
-} |
- |
-bool RE2RegularExpression::Match(const char* input_string, |
- bool full_match, |
- std::string* matched_string) const { |
- DCHECK(input_string); |
- // matched_string may be NULL |
- if (full_match) { |
- if (matched_string) |
- return RE2::FullMatch(input_string, matched_string); |
- else |
- return RE2::FullMatch(input_string); |
- } else { |
- if (matched_string) |
- return RE2::PartialMatch(input_string, matched_string); |
- else |
- return RE2::PartialMatch(input_string); |
- } |
-} |
- |
-bool RE2RegularExpression::Replace(std::string* string_to_process, |
- bool global, |
- const char* replacement_string) const { |
- DCHECK(string_to_process); |
- DCHECK(replacement_string); |
- if (global) { |
- StringPiece str(replacement_string); |
- return RE2::GlobalReplace(string_to_process, str); |
- } else { |
- return RE2::Replace(string_to_process, replacement_string); |
- } |
-} |
- |
- |
-namespace reg_exp { |
- |
-RegularExpressionInput* CreateRegularExpressionInput(const char* utf8_input) { |
- if (!re2_cache.get()) |
- re2_cache.reset(new RE2Cache(64)); |
- return new RE2RegularExpressionInput(utf8_input); |
-} |
- |
-RegularExpression* CreateRegularExpression(const char* utf8_regexp) { |
- if (!re2_cache.get()) |
- re2_cache.reset(new RE2Cache(64)); |
- return new RE2RegularExpression(utf8_regexp); |
-} |
- |
-} // namespace reg_exp |
- |