11767c5feSopenharmony_ci// Copyright (C) 2011 The Libphonenumber Authors 21767c5feSopenharmony_ci// 31767c5feSopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 41767c5feSopenharmony_ci// you may not use this file except in compliance with the License. 51767c5feSopenharmony_ci// You may obtain a copy of the License at 61767c5feSopenharmony_ci// 71767c5feSopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 81767c5feSopenharmony_ci// 91767c5feSopenharmony_ci// Unless required by applicable law or agreed to in writing, software 101767c5feSopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS, 111767c5feSopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121767c5feSopenharmony_ci// See the License for the specific language governing permissions and 131767c5feSopenharmony_ci// limitations under the License. 141767c5feSopenharmony_ci// 151767c5feSopenharmony_ci// Author: Tao Huang 161767c5feSopenharmony_ci// 171767c5feSopenharmony_ci// Implementation of a mutable match of a phone number within a piece of 181767c5feSopenharmony_ci// text. Matches may be found using PhoneNumberUtil::FindNumbers. 191767c5feSopenharmony_ci 201767c5feSopenharmony_ci#include "phonenumbers/phonenumbermatch.h" 211767c5feSopenharmony_ci 221767c5feSopenharmony_ci#include <string> 231767c5feSopenharmony_ci 241767c5feSopenharmony_ci#include "phonenumbers/phonenumber.h" 251767c5feSopenharmony_ci#include "phonenumbers/phonenumber.pb.h" 261767c5feSopenharmony_ci#include "phonenumbers/stringutil.h" 271767c5feSopenharmony_ci 281767c5feSopenharmony_cinamespace i18n { 291767c5feSopenharmony_cinamespace phonenumbers { 301767c5feSopenharmony_ci 311767c5feSopenharmony_ciPhoneNumberMatch::PhoneNumberMatch(int start, 321767c5feSopenharmony_ci const string& raw_string, 331767c5feSopenharmony_ci const PhoneNumber& number) 341767c5feSopenharmony_ci : start_(start), raw_string_(raw_string), number_(number) { 351767c5feSopenharmony_ci} 361767c5feSopenharmony_ci 371767c5feSopenharmony_ciPhoneNumberMatch::PhoneNumberMatch() 381767c5feSopenharmony_ci : start_(-1), raw_string_(""), number_(PhoneNumber::default_instance()) { 391767c5feSopenharmony_ci} 401767c5feSopenharmony_ci 411767c5feSopenharmony_ciconst PhoneNumber& PhoneNumberMatch::number() const { 421767c5feSopenharmony_ci return number_; 431767c5feSopenharmony_ci} 441767c5feSopenharmony_ci 451767c5feSopenharmony_ciint PhoneNumberMatch::start() const { 461767c5feSopenharmony_ci return start_; 471767c5feSopenharmony_ci} 481767c5feSopenharmony_ci 491767c5feSopenharmony_ciint PhoneNumberMatch::end() const { 501767c5feSopenharmony_ci return static_cast<int>(start_ + raw_string_.length()); 511767c5feSopenharmony_ci} 521767c5feSopenharmony_ci 531767c5feSopenharmony_ciint PhoneNumberMatch::length() const { 541767c5feSopenharmony_ci return static_cast<int>(raw_string_.length()); 551767c5feSopenharmony_ci} 561767c5feSopenharmony_ci 571767c5feSopenharmony_ciconst string& PhoneNumberMatch::raw_string() const { 581767c5feSopenharmony_ci return raw_string_; 591767c5feSopenharmony_ci} 601767c5feSopenharmony_ci 611767c5feSopenharmony_civoid PhoneNumberMatch::set_start(int start) { 621767c5feSopenharmony_ci start_ = start; 631767c5feSopenharmony_ci} 641767c5feSopenharmony_ci 651767c5feSopenharmony_civoid PhoneNumberMatch::set_raw_string(const string& raw_string) { 661767c5feSopenharmony_ci raw_string_ = raw_string; 671767c5feSopenharmony_ci} 681767c5feSopenharmony_ci 691767c5feSopenharmony_civoid PhoneNumberMatch::set_number(const PhoneNumber& number) { 701767c5feSopenharmony_ci number_.CopyFrom(number); 711767c5feSopenharmony_ci} 721767c5feSopenharmony_ci 731767c5feSopenharmony_cistring PhoneNumberMatch::ToString() const { 741767c5feSopenharmony_ci return StrCat("PhoneNumberMatch [", start(), ",", end(), ") ", 751767c5feSopenharmony_ci raw_string_.c_str()); 761767c5feSopenharmony_ci} 771767c5feSopenharmony_ci 781767c5feSopenharmony_cibool PhoneNumberMatch::Equals(const PhoneNumberMatch& match) const { 791767c5feSopenharmony_ci return ExactlySameAs(match.number_, number_) && 801767c5feSopenharmony_ci match.raw_string_.compare(raw_string_) == 0 && 811767c5feSopenharmony_ci match.start_ == start_; 821767c5feSopenharmony_ci} 831767c5feSopenharmony_ci 841767c5feSopenharmony_civoid PhoneNumberMatch::CopyFrom(const PhoneNumberMatch& match) { 851767c5feSopenharmony_ci raw_string_ = match.raw_string(); 861767c5feSopenharmony_ci start_ = match.start(); 871767c5feSopenharmony_ci number_ = match.number(); 881767c5feSopenharmony_ci} 891767c5feSopenharmony_ci 901767c5feSopenharmony_ci} // namespace phonenumbers 911767c5feSopenharmony_ci} // namespace i18n 92